java调用c++的几种方式
类似c#调用c++的方式,定义java端的c++代码接口。
·
jni
类似c#调用c++的方式,定义java端的c++代码接口
package crayon.jni;
public class JNITest {
public native static void set(int i);
public native static int get();
static{
System.loadLibrary("JNITest");
}
}
jna
jna是jni的封装,可以直接写c++代码(导入java的c头文件),再通过java调用,jna没有jni效率高。
#ifdef JNATEST_EXPORTS
#define JNATEST_API __declspec(dllexport)
#else
#define JNATEST_API __declspec(dllimport)
#endif
extern "C" {
JNATEST_API void set(long l);
JNATEST_API long get();
}
#include "stdafx.h"
#include "JNATest.h"
long tmp;
JNATEST_API void set(long l){
tmp = l;
}
JNATEST_API long get(){
return tmp;
}
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface JNATest extends Library {
JNATest INSTANCE = (JNATest) Native.loadLibrary(
"D:/CC/Tools_Tool_ITT_StdPrj_Dev/PF_Tools_VOB/Tools_SubTool/src/JNATest/Release/JNATest", JNATest.class);
public void set(int i);
public int get();
}
jnative
jnative也是基于jni的封装,jnative可以不定义任何函数,通过反射的方式调用c++函数
JNative native = new JNative(“a.dll”,“get_value”);
java异常调试
idea设置如下,点击断点窗口,弹出的异常管理窗口中设置class过滤,跳过系统代码
更多推荐
已为社区贡献4条内容
所有评论(0)