最近在学习jna,发现dll文件能能否成功调用取决于jdk位数。

32位jdk只能使用32位的dll,64位jdk只能使用64位的dll,否则位数不对应的话报的错是

"Exception in thread "main" Java.lang.UnsatisfiedLinkError: Unable to load library 'testx64': 找不到指定的模块。"

 

它为什么是直接无视位数不符合的dll?仔细一想,代码搜寻dll文件时是按名字来的,那放2个同名的test.dll一个是64位的一个是32位的,自然就能搜到与自己对应的,这不就可以方便的解决兼容问题,连代码都不用改了。

但是还有一个问题,一个文件夹内文件时不能重名的,怎么放同名不同位的文件?原来jna调用dll不单会搜索项目下的dll,也会搜索在系统环境Path里各个文件,在里面填自己建两个文件分别放同名不同位的文件就行了,

例如分别在C:\Program Files和C:\Program Files (x86)文件件中创建文件夹存放相应的dll文件。

posted on 2016-11-07 10:07  池的巧克力  阅读(2524)  评论(0编辑  收藏  举报