扫码阅读
手机扫码阅读

Windows 下 JNI 调用动态链接库 dll

242 2024-07-21

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:Windows 下 JNI 调用动态链接库 dll
文章来源:
BUG弄潮儿
扫码关注公众号
Article Summary

Java调用本地代码的方案摘要

JNI: Java Native Interface (JNI) 是实现Java和C/C++通信的一种方式。调用共享库(.dll/.so)的过程包括多个步骤,通常需要java程序员编写额外的代码来调用原生函数,这是JNI的一个缺点。

JNA: Java Native Access (JNA) 提供了一系列工具类,允许Java在运行时动态访问本地库而无需编写Native/JNI代码。相对于JNI,JNA简化了许多操作,但不能完全取代JNI,因为它只能实现Java访问C函数。

安装VS2022

下载并安装Visual Studio 2022社区版,选择“使用C++的桌面开发”进行安装。

创建Java项目

编写本地方法,在Java类中声明native方法,然后使用javah命令生成C/C++的头文件。

创建C/C++项目

在Visual Studio 2022中创建动态链接库dll项目,将生成的头文件添加到项目中并实现其定义的方法。配置项目依赖,添加JDK的jni.h文件,并注意编译的dll/x64与JDK版本的对应关系。

编写Java代码调用dll

在Java代码中声明本地方法,使用System.load或System.loadLibrary方法加载dll文件,确保Java能够找到并调用C/C++的本地方法。

java.library.path说明

System.load和System.loadLibrary用于加载库文件。可以通过System.getProperty("java.library.path")获取jvm变量指向的路径。默认情况下,Windows平台包含jre相关目录、程序当前目录、Windows目录、system32和环境变量path指定的目录。Linux平台下可通过修改/etc/profile或使用-Djava.library.path参数来添加java.library.path。

想要了解更多内容?

查看原文:Windows 下 JNI 调用动态链接库 dll
文章来源:
BUG弄潮儿
扫码关注公众号