DLL已经做好了,做了一个单独的测试java文件,然后用javac,java也能正常调用运行,但是把这个java文件放到工程中就出问题了:
java.lang.UnsatisfiedLinkError: getStr
at util.CppCaller.getStr(Native Method)
at com.gcrj.sourcediff.main.SourceDiffCmdMain.main(SourceDiffCmdMain.java:70)
Exception in thread "main" 
感觉应该不是路径的问题,system32下,Javahome/bin下,class的同目录下都放了这个dll,还是不行。调试时候发现好像是调用的函数名称的问题。我的申明调用dll的文件叫CppCaller.java,native函数为getStr,这个文件放在util包中,系统调用getStr的时候好像把包名加在了方法名前,调用了一个叫“_Java_util_CppCaller_getStr@8”的函数,然后就出错了。应该怎么解决呢?我用的是eclipse的开发环境。
哪位大虾指点一下,感激不尽,这问题郁闷我好几天了。

解决方案 »

  1.   

    你的步骤是否是这样的:
    javac编译一下
    javah生成头文件
    生成dll工程,加入头文件,建立c++原文件,引入头文件,覆盖头文件中的方法!生成dll文件后放入源程序所在的文件夹中。
    java一下就ok了
      

  2.   

    hand edit you c++ head file , add the package name like this :java_yourPackage_class_method, then mend the relevant .cpp file
    and compile your c++ project and export new dll file, okie~~
      

  3.   

    http://community.csdn.net/Expert/topic/4998/4998098.xml?temp=4.395694E-02