java调用c++的几种方式
2023-06-13 09:11:07 时间
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?「建议收藏」
- java数组的声明_Java数组定义常用方法[通俗易懂]
- java源程序文件的扩展名_使用Java语言编写的源程序保存时的文件扩展名是什么…
- java循环语句_Java中的循环语句
- java启动器_JAVA基础:Java 启动器如何查找类
- java 堆栈的声明_Java 堆栈[通俗易懂]
- java applet介绍,Java Applet教程介绍[通俗易懂]
- java修改session默认过期时间「建议收藏」
- Java基准测试工具JMH使用
- java 8 日期操作,真香!
- 【说站】java中TCP通信是什么
- java 基础语法
- java数组 初始化_用Java初始化数组「建议收藏」
- 服务Linux启动Java服务:一步步去完成(linux启动java)
- 使用Java在Linux系统上开发:一步步安装全部组件(java环境linux)
- Java到底有没有多维数组?
- 技术的融合突破极限:Java与Redis的技术融合(java与redis)
- Java程序更新MySQL记录的实践(java更新mysql)
- key处理解决Redis中Java端过期key的方法(redisjava过期)
- 服务器是否开机Java检查Linux服务器开机状态(java判断linux)
- 淘汰使用Java管理Redis过期淘汰(redisjava过期)
- Java如何查询MySQL?25字(java查询mysql)
- Java实现Redis数据存储(java的redis)
- Java编程实现MySQL表备份(java备份mysql表)
- Java解答Oracle使用更轻松的实现方式(oracle写成java)
- Oracle收购了Java一个伟大的转折点(java被oracle吗)
- 深入解析java虚拟机
- java及C++中传值传递、引用传递和指针方式的理解