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文件具体应该放到什么地方?
谢谢~
...全文
1548 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 下面。
内容概要:《中国银保监会监管数据安全管理办法(试行)》旨在规范监管数据的安全管理,提升数据保护能力,防范安全风险。办法明确了监管数据的定义、范围及其在采集、存储、处理、使用、委托服务及销毁等全生命周期中的安全管理要求。强调数据应依法合规采集,通过专用网络传输,存储于安全环境,并实施分级分类防护措施。对数据使用限定了用途和设备范围,要求脱敏处理和可追溯管理,并严格管控对外提供和跨境共享。针对委托服务机构设定了准入条件和协议管理机制,明确安全责任。同时建立自查、评估、检查和应急报告机制,确保数据安全事件及时处置和上报。; 适合人群:银保监会及其派出机构工作人员、受托提供监管数据服务的企事业单位、金融机构信息技术与数据管理人员。; 使用场景及目标:①指导监管数据全生命周期的安全管理实践;②规范受托机构的服务准入与安全管理;③建立健全数据安全风险防控与应急响应机制;④支持监管数据在合规前提下的有效利用与共享。; 阅读建议:本办法具有较强的政策性和操作性,建议结合实际工作流程对照执行,重点关注数据分类、权限控制、技术防护和应急管理等方面要求,并定期开展合规自查与培训。
内容概要:本文系统性地介绍了编程语言进阶的学习路径与实战项目实践,涵盖主流技术栈(Python、Java、Go、Rust)的优劣势分析,针对高并发性能优化、业务逻辑可维护性、数据处理效率等行业痛点提供具体解决方案,并结合设计模式与代码示例深入讲解。文章重点通过构建一个基于FastAPI的简易电商平台后端,演示了从技术选型、核心编码到项目优化的完整流程,强调性能调优、架构设计与实际工程问题的应对策略。最后提出进阶建议,倡导深入底层原理、掌握云原生技术、参与开源项目以持续提升技术能力。; 适合人群:具备一定编程经验,希望提升系统设计能力和工程实战水平的1-3年开发者,以及准备向中高级工程师进阶的技术人员。; 使用场景及目标:①帮助开发者在不同技术路线间做出合理选型决策;②掌握高并发、分布式、缓存等关键技术的实际应用;③通过完整项目实践理解Web后端开发全流程并积累可迁移经验;④提升对框架底层原理和系统性能优化的理解。; 阅读建议:建议边读边动手实现文中的代码示例与项目模块,结合调试与性能测试加深理解,同时延伸学习文中提到的底层机制(如GIL、goroutine、ORM原理)和工具链(Docker、Redis、JWT),以构建完整的知识体系。

62,628

社区成员

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

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