调用dll出错! dll文件没找到,我以前在98中出该异常的原因是大小写,改为小写后就没问题了(部分机器),还有 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很简单:(-)确定文件是否正确(你说已经正确了)(二)查看你使用的JVM属性java.library.path,看看的那个dll在不在路径中。不要问我怎么看呀,那样我就昏到了。System.getProperty("java.library.path") 呵呵,这个问题我好像原来也遇到过。我原来是使用的JBuilder7编写Java程序,调用VC编写的Dll文件,却总是报错(错误信息与你所说的类似)。分析原因:首先肯定不是动态链接库没有找到,因为错误信息只是说Add方法没有找到(你可以尝试将动态链接库移到另外的一个目录中,然后运行Java程序,错误信息坑顶不一样);后来,我发现用JBuilder编写程序时,它都将类分配在一个Packege中,而在使用Javah命令生成.h文件时,.h文件中却没有该包的信息。这就是问题的所在。所以,我认为你的程序也是存在这样的问题,Java程序在调用Dll文件时找不到想要的方法(虽然你认为自己都是对的)参考解决方法:不要使用Javah命令行生成.h文件,而是使用JBuilder来生成(具体在哪个地方,因为我现在没有JBuilder我不好说,你嫌自己找一下吧)。 我的dll文件是用delphi写的,没有用javah生成的.h文件大部分文章介绍都是是用c/c++调用.h,然后实现dll,那delphi写的dll要注意什么? peter207(辉) ( ) 信誉:100 你太勇敢了,但是SUN的建议是不错的,因为JVM是按照他本身(就是SUN规定)的规则来进行函数名改编调用的,你用不用 javah是次要的,主要的问题是你要保证函数名改变符合SUN的JNI规范的。还有(只是建议),JNI最好还是用c语言系列实现比较好的。同时你用delphi写的时候,要保证调用机制的问题,是C style调用,而delphi (pascal)系列是用pascal调用的,我不知道怎么转,因为偶没有用过delphi的,不好意思,帮不上你什么 EdwardPeng(皮斯凯) 说得有道理。我也遇到过类似情况,我的class是在package中的,而用javah生成时没有包含package信息,后来自己修改了头文件使得接口函数包括package名称(?不知是否javah如何可以编译得到包含package的头文件)然后动态库调用就ok了,不过我是用c++写的。看看你的class是否在packge中;另外delphi我想应该有动态库的export声明的,你检查看看 终于搞定了,不过还是用c++写了一个dll 要开除啦。新人求思路。一个帐号对应多个联系地址 请高手指教,论坛注册时不是有个“上传图片吗”,那个东西用JAVA是怎么做的 请高手看看错在哪 怪!强制类型转换无用,请高人指点! 想替换路径中的"\"为"/" 执行一直出错path.replaceAll("\\","/"); 想学JAVA,但是不知道J2EE、J2SE、J2ME是什么意思?他们有什么区别?学哪个好一些呢? 急找杨雄星,UP有分. 怎样通过点击按钮的方式创建一个tree 散分的小问题 Win2000菜单的淡入淡出效果真是太好看了,你会吗? java做的东西运行速度很慢是吗 JB8显示不了中文怎样解决??
(-)确定文件是否正确(你说已经正确了)
(二)查看你使用的JVM属性java.library.path,看看的那个dll在不在路径中。
不要问我怎么看呀,那样我就昏到了。System.getProperty("java.library.path")
分析原因:
首先肯定不是动态链接库没有找到,因为错误信息只是说Add方法没有找到(你可以尝试将动态链接库移到另外的一个目录中,然后运行Java程序,错误信息坑顶不一样);
后来,我发现用JBuilder编写程序时,它都将类分配在一个Packege中,而在使用Javah命令生成.h文件时,.h文件中却没有该包的信息。这就是问题的所在。
所以,我认为你的程序也是存在这样的问题,Java程序在调用Dll文件时找不到想要的方法(虽然你认为自己都是对的)
参考解决方法:
不要使用Javah命令行生成.h文件,而是使用JBuilder来生成(具体在哪个地方,因为我现在没有JBuilder我不好说,你嫌自己找一下吧)。
大部分文章介绍都是是用c/c++调用.h,然后实现dll,那delphi写的dll要注意什么?
我也遇到过类似情况,我的class是在package中的,而用javah生成时没有包含package信息,后来自己修改了头文件使得接口函数包括package名称(?不知是否javah如何可以编译得到包含package的头文件)然后动态库调用就ok了,不过我是用c++写的。看看你的class是否在packge中;
另外delphi我想应该有动态库的export声明的,你检查看看