最近要和服务端对接一些功能,需要将一些C++开发的功能对接给服务端接入,但是他们服务端开发用的是java,所以才有了这个问题:如何使用Java调用C++?问题的答案就是:使用jni做一层java到C++的数据格式转换,然后用java调用C++。
这里需要安装两个工具:jdk和mingw
jdk安装成功标准:
(1) java命令正常使用:cmd中输入java,运行
(2) javac命令正常使用:cmd中输入javac,运行:
mingw安装成功标志:
(1) gcc正常使用:输入gcc -v
(2) g++正常使用:输入g++ -v
public class NativeTrait {
public native static int isMarkOK(String filename);
static {
System.load("E:/Code/jni/MarkAR/libMarkAR.dll");
}
public static void main(String[] args) {
NativeTrait trait = new NativeTrait();
String filename = "E:/data/zq/miguqingfeng.jpg";
int ret = trait.isMarkOK(filename);
System.out.println(ret);
}
}
>> javac NativeTrait.java
>> javah NativeTrait
#include "NativeTrait.h"
#include
#include
JNIEXPORT jint JNICALL Java_NativeTrait_isMarkOK(JNIEnv *env, jclass obj, jstring path_) {
std::string path = std::string(env->GetStringUTFChars(path_, 0));
std::cout << "Input path is: " << path << std::endl;
return 0;
}
>> g++ -Wl,--add-stdcall-alias -shared -o libMarkAR.dll NativeTrait.cc
>> java NativeTrait
[1] https://blog.csdn.net/dashu_java/article/details/119326520
[2] https://blog.csdn.net/azure_sky_2014/article/details/71915605