关于JNA调用32位和64位动态链接库,即*.dll

来源:互联网 发布:淘宝简直被骗天涯论坛 编辑:程序博客网 时间:2024/05/17 22:10

今天研究了下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位数进行了测试结果如下:

主机dlljdk可行32位32位32位132位64位32位064位32位32位164位64位32位064位32位64位064位64位64位1

结论: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





1 0
原创粉丝点击