近日项目中需要用java调用c/c++编写的dll库,所有了解到jna这个东东,下面是使用的一些经验:
一、java使用Jna需要两个jar包,eg:jna-3.5.1.jar和platform-3.5.1.jar 下载地址,添加完依赖包后把需调用的dll放到项目根目录下就是和src同级目录下
二、报错:Unable to load DLL 'xxx.dll': 找不到指定的模块,可能有一下几个问题:
1、使用的jdk和dll位数不同,64位的jdk只能调用64位的dll,32一样。
2、dll的位置放的不对(也有说放在c盘的systen32下的)
3、电脑缺少dll依赖的组件(例如我重装完系统怎么调用都不成功,最后发现缺少了Visual C++ Redistributable Packages for Visual Studio 2013这个组件 下载地址,也有可能是其他组件可以用VS的插件查看,具体请百度)
三、java-c 数据类型映射 jna操作文档 下载地址
常见的映射就不说了,这里说一下我项目中用到的:
1、char*&
//dll中
int pack_clou102(char*& sendstr)
//java中接口 PointerByReference 表示指针的引用类型
public