关于Java中的JNative调用DLL时遇到的问题,急,在线等!

Digas_ 2017-12-04 02:31:44
现在我有一个 dll 文件,但是需要调用的方法是在一个类中,请问该如何调用到这个方法呢?
要调用的方法不是静态的,应该需要new对象才能调到,问题就出现在这里了,求各位大神解答!

...全文
318 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Digas_ 2017-12-05
  • 打赏
  • 举报
回复
谢谢各位的回答,我忘了告诉大家这是别人给的DLL文件,不是自己写的,所以 只能在这个基础上调用,后来我换成了 Jacob 和 32位1.8jdk就完美调用了,但是1.7却调不出来。
自由自在_Yu 2017-12-04
  • 打赏
  • 举报
回复
Function show not found,这种情况一般有两种原因: 1. 找不到dll 解决办法:将dll放到system32下面,该目录是windows查找dll的目录,一般情况下是可以的,如果不行,或者用 System.out.println(System.getProperty("java.library.path"))打印出classpath,将dll放到classpath下, 然后用System.loadlibrary("xxx.dll")加载。 2.dll在,函数名称不对 看LZ的代码,这个dll好像是自己写的,如果对c++不熟悉的话,可能会造成错误,因为c++对函数进行优化时,可能会更改函数名字,比如你的"show"函数会被优化成__show@adfa,所以你在jnative中找不到show了。 解决办法:用一个查看dll的工具,直接打开dll查看dll函数是否成功导出,以及被优化后的函数名是什么。然后再jnative中使用被优化后的函数名。或者在函数前面加上 extern "C",强制编译器使用c的方式编译,不对函数名进行优化。如果还不行,试试更改_cdecl __stdcal。
  • 打赏
  • 举报
回复
dll文件需要放到System32下,是否已经放进去了?

62,614

社区成员

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

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