JNA 详细完整实例

本文提供了一个详细的JNA(Java Native Access)使用教程,通过创建C++动态链接库(DLL),然后在Java中调用其方法。教程包括创建DLL、声明接口、实现接口和打包,最后在Java项目中引入DLL和JNA库进行调用,确保方法名匹配以避免`UnsatisfiedLinkError`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

啰嗦话不多说,网上很多这方面的教程,但是我也看了好久也能运行一个成功的例子,因为很多地方都忽略了


下面来演示个完整的jna例子


1. 随便使用个c或c++开发工具(我用的VC++6.0)

打开软件新建个dll工程,VC里面是win32 dynamic-link library,输入工程名称后点击下一步,然后再选a simple dll project,第一项是空的project,我比较懒就选第二个,有简单的文件存在,然后自己拿来改下,最后确定就能看到工程已经建好了


2. 写C的接口文件,就是以.h结尾的那个文件,选择文件-->新建-->C/C++Header File文件,然后就能看到工程的header文件中有了个新的.h文件(我起的名字是test)

然后打开test.h文件,声明我的接口咯


这里值得注意的地方是必须写(extern "c"的声明,不然到时候使用java的jna是不可能匹配到这个方法的,很明显会抛出异常java.lang.UnsatisfiedLinkError: Error looking up function 'add': ÕҲ»µ½ָ¶¨µ),这个文件相当于我们的java中的interface,你可以这样理解


extern "C" _declspec(dllexport) 

int add(int first, int second);  


3. 写C接口的实现类,如何实现这个add方法


打开source file很明显看到有一个文件是xxx.cpp(xxx是以你的工程名字来定的), 另外一个是stdafx.cpp, 这个不需要管他, 我们就在xxx.cpp中写代码吧


xxx.cpp原本就存在内容,你不喜欢的,可以直接新建一个source

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值