问题描述
main.hintadd(inta,intb);intfactorial(intn);main.appintadd(inta,intb){returna+b;}intfactorial(intn){return2*n;}编译生成DLL,用JNA调用的时候,显示Exceptioninthread"main"java.lang.UnsatisfiedLinkError:Errorlookingupfunction'add':……atcom.sun.jna.Function.<init>(Function.java:179)atcom.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:345)atcom.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:325)atcom.sun.jna.Library$Handler.invoke(Library.java:203)at$Proxy0.add(UnknownSource)atcom.yonyou.GUI.main(GUI.java:29)接口publicinterfaceJNATestDllextendsLibrary{JNATestDllinstanceDll=(JNATestDll)Native.loadLibrary("main",JNATestDll.class);publicintadd(inta,intb);publicintfactorial(intn);}实现System.out.println(JNATestDll.instanceDll.add(4,2));为什么会报那样的错误呢?求指教
解决方案
解决方案二:
Java这边貌似没有问题C++那边做DLL的时候,得把add函数声明为EXPORT的才行确认方法:在控制台运行dumpbin/EXPORTSmain.dll,查看是否有add函数如果没有的话,百度【用C/C++做DLL函数的导出方法】,估计就能解决了其中的dumpbin是VC的SDK的命令另外得保证Java和C++同时为32位或者64位如果还解决不了的话,贴完整代码上来吧