今天研究了下JNA,感觉收获不小,这货可比JNI好用多了。
先上个实例,我这参考了文章
http://blog.csdn.net/shadowsick/article/details/9101477#comments
我按照此文实现了JNA的第一个程序。
但是当我把这个程序拷到64位主机上再运行就会报错:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'test': 找不到指定的模块。
于是问题来了不同位数的dll如何兼容呢?
我又做了一个64位的test.dll对不同主机,dll,jdk位数进行了测试结果如下:
|
结论:dll可否调用与jdk位数有关,需要一致才行。
以下是过程
1.根据参考文章制作了32位的dll:testx86.dll,内含一个用c语言写的add(int a,int b)。
2.用vs2010再制作一个64位的dll,过程十分简单,用vs2010打开先前制作了32位的dll源码,选择编译平台为64位再输出即可。
3.略微根据修改参考文章所写的代码使其便于测试。
4.结果见上表,另附源码在百度云盘:http://pan.baidu.com/s/1mhaOhWO