java调用c/c++

article/2025/10/17 0:23:49

最近项目想将比较重要的配置文件加密、综合考虑后决定用java jni实现,步骤如下

1.定义java本地接口

package com.msg.jni;public class JniMsg {static {try {String os = System.getProperty("os.name").toLowerCase();String path = "F:/opt/";System.out.println("work dir:" + path);if (os.contains("windows")) {System.load(path + "/ext/configlib.dll");} else if (os.contains("linux")) {System.load(path + "/ext/configlib.so");}} catch (Exception e) {e.printStackTrace();}}public native String[] getAllCate();}

2.生成c/c++头文件

执行 javah -jni -encoding utf-8 -classpath . com.sc.privatecloud.server.jni.JniMessage 命令生成头文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_msg_jni_JniMsg */#ifndef _Included_com_msg_jni_JniMsg
#define _Included_com_msg_jni_JniMsg
#ifdef __cplusplus
extern "C" {
#endif
/** Class:     com_msg_jni_JniMsg* Method:    getAllCate* Signature: ()[Ljava/lang/String;*/
JNIEXPORT jobjectArray JNICALL Java_com_msg_jni_JniMsg_getAllCate(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endif

3.visual studio2013编写c++代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"com_msg_jni_JniMsg.h"#define CATE_CONFIG_LENGTH  2char *cate[482] = { "vBtqcNkMKMZ86RvvhgzNhEBdI3mu4oitNWhOFYOpndsaWivNhZNjCt83AhDR4M9wuZ3Tkxydotb+E70kLxwfcg=="
, "uME16Cvnd9zH+QYuv8dOHJVBYVQvcLVc1/GhUJjKjcV4u1jhOYKljsX9vzuE0Dna"
};jstring   CharToJobjectArray(JNIEnv* env,char **p,int len){jclass objClass = (*env)->FindClass(env, "java/lang/String");jobjectArray strArray = (*env)->NewObjectArray(env,(jsize)len, objClass, 0);jstring jstr;int i = 0;for (; i<len; i++){jstr = (*env)->NewStringUTF(env, p[i]);(*env)->SetObjectArrayElement(env, strArray, i, jstr);}return strArray;}JNIEXPORT jobjectArray JNICALL Java_com_sc_privatecloud_server_jni_JniMessage_getAllCate
(JNIEnv *env, jobject j){return CharToJobjectArray(env,cate,CATE_CONFIG_LENGTH);}

通过visual studio编译成动态链接库configlib.dll ,配置如下

 

4.测试

public class DemoTest {public static void main(String args[]) {JniMsg jnimsg=new JniMsg();String [] config= jnimsg.getAllCate();for(String c:config) {System.out.println(c);}}}输出:
vBtqcNkMKMZ86RvvhgzNhEBdI3mu4oitNWhOFYOpndsaWivNhZNjCt83AhDR4M9wuZ3Tkxydotb+E70kLxwfcg==
uME16Cvnd9zH+QYuv8dOHJVBYVQvcLVc1/GhUJjKjcV4u1jhOYKljsX9vzuE0Dna

web.sendcloud.net


http://chatgpt.dhexx.cn/article/kRwR4159.shtml

相关文章

C/C++如何调用Java

前言 简单介绍C/C如何调用Java&#xff0c;内容适合未接触过此类工程的朋友作为上手参考。 一、编译环境 1. 64位的win10系统 2. JDK&#xff1a;jdk-8u181-windows-x64.exe 3. IDE VS2017 二、调用步骤及Java虚拟机使用方法 一般步骤&#xff1a; 编写Java代码, 并编译…

java调用C

文章目录 idea创建一个java类通过命令生成.h文件vs2015创建dll项目修改dll项目的属性补充dll项目的头文件和源文件导入文件源文件的制作 生成dll文件idea导入dll文件idea使用函数 这个确实卡了我一段时间。 先说说必要性吧。 java无法处理的操作&#xff08;指向地址&#xff…

Java调用c/c++(JNI)最详细步骤

一、JNI(Java Native Interface)的作用就是Java通过JNI调用其他语言的函数(或方法)&#xff08;主要是C&C&#xff09;。 二、准备 1. java8系列jdk&#xff0c;有很多版本&#xff0c;任选一个即可&#xff0c;如jdk1.8.0.231。安装好&#xff0c;配置好环境。 2. vs20…

使用java调用C语言程序教程

1.idea创建一个java类 严格来说&#xff0c;核心步骤并不是创建一个java类&#xff0c;而是创建一个方法&#xff0c;那个方法要被native修饰&#xff0c;这才是关键。 接着在TestNativeCode类当中声明我们的本地方法&#xff1a; package com.wwj.nativecode; public class T…

linux中文语言包下载地址,centos中文语言包-官方版-centos中文语言包fonts-chinese-3.02-12.el5.noarch.rpm-独木成林...

centos中文语言包 fonts-chinese-3.02-12.el5.noarch.rpm&#xff0c;直接在目录下运行&#xff1a; rpm -ivh fonts-chinese-3.02-12.el5.noarch.rpm linux中文文件名乱码的解决办法(安装中文支持包) 由于安装英文版的系统不支持中文&#xff0c;出现中文文件名乱码。 下面操作…

Linux-centos安装MySQL8.0.22连接驱动文件mysql-connector-java-8.0.22-1.el7.noarch.rpm

目录 1、下载地址 2、选择版本 3、安装驱动 1、下载地址 https://downloads.mysql.com/archives/c-j/ 2、选择版本 选择对应的版本&#xff0c;这里系统选择Redhat系列Linux7&#xff0c;驱动版本选择8.0.22&#xff0c;点击download下载到本地再上传至服务器安装。 也可…

Mysql-MHA 安装过程中遇到的问题 :报错rpm -ivh mha4mysql- manager- 0.56-0.el6.noarch.rpm错误:依赖检测失败:

rpm -ivh mha4mysql- manager- 0.56-0.el6.noarch.rpm 错误&#xff1a;依赖检测失败&#xff1a; perl(Config::Tiny) 被 mha4mysql-manager-0.56-0.el6.noarch 需要 perl(Log::Dispatch) 被 mha4mysql-manager-0.56-0.el6.noarch 需要 perl(Log::Dispatch::File) 被 mha4mysq…

Linux下载并安装rabbitmq-server-3.6.5-1.noarch.rpm

目录 1.安装rabbitmq所需要的依赖包 2.下载安装包 3.安装服务命令 4.修改配置 5.启动rabbitmq 6.rabbitmq控制台安装 7.访问你的虚拟机 ip:15627 会出现下面的页面 用户名和密码都是 guest 8.常用命令 1.安装rabbitmq所需要的依赖包 yum install build-essential o…

centos rpm安装mysql时依赖检测失败:mysql57-community-release 与 mysql80-community-release-el8-3.noarch 冲突

1.出现以上报错&#xff0c;说明MySQL安装版本冲突 首先卸载原来的MySQL rpm -qa |grep mysql //搜索安装的MySQL包rpm -e --nodeps 搜索出来的包名 //卸载示例&#xff1a; [rootcentos8s ~]# rpm -qa |grep mysql mysql57-community-release-el7-11.noarch [rootcent…

yum 安装daemonize 错误:依赖检测失败: daemonize 被 jenkins-2.303.1-1.1.noarch 需要

错误&#xff1a;依赖检测失败&#xff1a; daemonize 被 jenkins-2.303.1-1.1.noarch 需要 安装 epel-release yum -y install epel-release安装 daemonize yum -y install daemonize结果&#xff1a;

php代码解决乱码问题

在用php的passthru函数的时候&#xff0c;然后出现了乱码的情况 代码&#xff1a; <?php echo passthru("ipconfig"); ?> 解决方法&#xff1a; 在原来的代码前面加 header("content-type:text/html;charsetgbk2312"); charset——后面是修改…

PHP-MySQL乱码[?]问题处理

PHP-MySQL乱码[?]问题处理 PHP-MySQL乱码[?]问题处理问题展示原因分析查看数据库编码格式WindowsLINUX 解决方案1、修改MySQL配置文件2、修改php连接数据库的编码格式。 修改后结果展示 PHP-MySQL乱码[?]问题处理 问题展示 php执行sql语句返回结果为’???’ 原因分析…

PHP文件乱码解决

1.查看项目的编码格式是不是UTF-8 2.在页面的开始处加入下面代码 <?php header("content-type:text/html;charsetutf-8"); //设置编码 ?>3.如果是html和PHP语言混合的PHP文件&#xff0c;还需要<head>标签下&#xff0c;加如下代码&#xff1a; <…

php如何解决中文乱码问题?

首先 乱码为什么会发生&#xff1f; 乱码的发生大致有2种原因&#xff0c;一种是编码(charset) 设置错误&#xff0c;导致浏览器以错误的编码来解析&#xff1b;另一种是文件被以错误的编码打开&#xff0c;然后保存&#xff0c;比如一个文本文件原先是GB2312 编码的&#xff…

php页面上显示中文乱码怎么解决,php输出中文乱码问题怎么解决?,php页面中文显示乱码...

php输出中文乱码问题怎么解决&#xff1f;怎么解决PHP输出中汉字乱码问题&#xff1f;&#xff0c;解决方案&#xff1a;1。对于HTML和PHP混合的页面&#xff0c;应该使用元标签或者header()函数来统一页面编码&#xff1b;2.对于纯PHP的静态页面&#xff0c;使用header()函数将…

解决html、php中文乱码问题

我们将乱码情况分为以下几种&#xff0c;有需要的可以对照下面的几种情况有针对性的解决乱码问题 第一种&#xff1a;解决HTML中中文乱码问题方法 如果你的HTML文件文件出现了乱码问题&#xff0c;那么你可以在head标签里面加入UTF8编码(国际化编码)&#xff1a;UTF-8是没有国…

解决 PHP 输出中文乱码的问题

本文由荒原之梦原创&#xff0c;原文链接&#xff1a;http://zhaokaifeng.com/?p1340 解决 PHP 输出中文乱码的问题 问题描述 今天给导航狗(https://daohanggou.cn/)的 PHP 程序和数据库文件迁移了服务器, 但是迁移到新的服务器上之后 PHP 输出的中文和 PHP 输出的从 MySQL…

原创:PHP乱码怎么办?五种方法彻底解决PHP乱码问题

对于刚接触PHP的新手来说&#xff0c;乱码可能会让你边临崩溃&#xff0c;但是你要习惯&#xff0c;既然想学好PHP&#xff0c;乱码是家常便饭&#xff0c;不管是老鸟还是新手&#xff0c;都会遇到乱码的问题&#xff0c;下面是我总结的几个常见并且有效的解决方法&#xff1a;…

win7 装MacOS虚拟机做iOS开发

1. 下载安装Vmware Player 2. 下载MacOS10.6 Image http://www.verycd.com/topics/2897839/ [Mac.OS.X.操作系统].Mac.OS.X.Lion.10.7.VMware.Pre-Installed.Image.zip 详情 转载于:https://www.cnblogs.com/technical/archive/2012/04/13/2445417.html

求助。VMware上的MacOS虚拟机安装出现蓝色界面

请教&#xff01;联想小新air14IWL可以安装什么版本得MacOS镜像呢&#xff1f; 目前尝试了两个版本好像是10.15和10.12&#xff0c;截图放下面了 进去总是显示最后那张&#xff0c;根据教程虚拟机的文件目录里也都做了更改还是没有变化 请问是版本的问题还是什么有问题&…