jna找不到dll文件的问题

zilch_09 2009-06-26 09:26:44
在exlipse里需要利用jna调用一个dll文件,使用Native.loadLibrary("TKSKEncLib",**.class)加载库。 如果是第一个参数写绝对路径的话,可以运行。但是我把第一个参数改为相对路径就会总是提示

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'TKSKEncLib.dll': ???????¨
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:155)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:216)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:191)
at com.sun.jna.Library$Handler.<init>(Library.java:131)
at com.sun.jna.Native.loadLibrary(Native.java:279)
at com.sun.jna.Native.loadLibrary(Native.java:265)
at ceshi.JiamiJnaTest$TKSKENCLIB.<clinit>(JiamiJnaTest.java:11)
at ceshi.JiamiJnaTest.main(JiamiJnaTest.java:29)

工作目录是E:\workspace
将 dll文件在E:\workspace 、E:\workspace\test 、E:\workspace\test\ceshi (class位置) 还有环境变量path 和 C:\WINDOWS 、C:\WINDOWS\system32 里都放了一遍 还是不行.
哪位大侠知道到底是什么原因? dll文件具体应该放到什么地方?
谢谢~
...全文
1506 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yy900717 2011-07-12
  • 打赏
  • 举报
回复
我连绝对路径都还是提示:Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'C:\Documents and Settings\Administrator\Workspaces\MyEclipse 8.5\test\WsnDevice': ???????¨
都纠结了好多天了,还是不行啊,各位大牛帮帮忙吧
zilch_09 2009-06-26
  • 打赏
  • 举报
回复
呃 解决了 ...
当时用绝对路径的时候名字是TKSKEncLib.dll ,改相对路径的话不能加后缀名,当时没删掉...
怪不得放哪都不管用 晕啊
例:
public interface TKSKENCLIB extends Library {
TKSKENCLIB skenc = (TKSKENCLIB) Native.loadLibrary ("TKSKEncLib",TKSKENCLIB.class);
public int SKEncFile(String a, String b, String c, int d);
}
资料:
Native.loadLibrary() 函数有 2 个参数:
1 , dll 或者 .so 文件的名字,但不带后缀名。这符合 JNI 的规范,因为带了后缀名就不可以跨操作系统平台了。
搜索 dll 的路径是:
1 )项目的根路径;例:E:\workspace\test
2 )操作系统的全局路径;C:\WINDOWS 、C:\WINDOWS\system32
3 ) path 指定的路径。
2 ,第二个参数是本接口的 Class 类型。
JNA 通过这个 Class 类型,根据指定的 dll/.so 文件,动态创建接口的实例。
zilch_09 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 zilch_09 的帖子:]
工作目录是E:\workspace
将 dll文件在E:\workspace 、E:\workspace\test 、E:\workspace\test\ceshi (class位置) 还有环境变量path 和 C:\WINDOWS 、C:\WINDOWS\system32 里都放了一遍 还是不行.
哪位大侠知道到底是什么原因? dll文件具体应该放到什么地方?
谢谢~
[/Quote]

已经放过 C:\WINDOWS了,不行
billhepeng 2009-06-26
  • 打赏
  • 举报
回复
将dll copy 到 C:\WINDOWS 下面。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧