Swig C++;Java不满意链接错误 我用SWIG将C++转换成java。 我使用g++创建DLL和编译 swig -c++ -java -package preprocessor Point.i g++ -c -std=c++11 Point.cpp Point_wrap.cxx -I E:\ProgramFiles\jdk\include -I E:\ProgramFiles\jdk\include\win32 g++ -shared Point_wrap.o Point.o -o point.dll
我在编译和创建dll时没有任何错误。 所以,当我将生成的java文件和dll放入我的项目时,我在创建新对象时出现了一个不满意的链接错误。它仅在我使用Windows 8.1 x86时出现。在x64版本上,一切正常Swig C++;Java不满意链接错误 我用SWIG将C++转换成java。 我使用g++创建DLL和编译 swig -c++ -java -package preprocessor Point.i g++ -c -std=c++11 Point.cpp Point_wrap.cxx -I E:\ProgramFiles\jdk\include -I E:\ProgramFiles\jdk\include\win32 g++ -shared Point_wrap.o Point.o -o point.dll,java,c++,g++,swig,unsatisfiedlinkerror,Java,C++,G++,Swig,Unsatisfiedlinkerror,我在编译和创建dll时没有任何错误。 所以,当我将生成的java文件和dll放入我的项目时,我在创建新对象时出现了一个不满意的链接错误。它仅在我使用Windows 8.1 x86时出现。在x64版本上,一切正常 Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: preprocessor.PointClassJNI.new_Point__SWIG_0()J at preprocessor.PointCla
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: preprocessor.PointClassJNI.new_Point__SWIG_0()J
at preprocessor.PointClassJNI.new_Point__SWIG_0(Native Method)
at preprocessor.Point.<init>(Point.java:78)
at GUI.FileWorker.fileParser(FileWorker.java:45)
at GUI.MainWindow$2.actionPerformed(MainWindow.java:139)
也许有人有这个问题。我将非常感谢任何帮助 我终于找到了解决办法。 只需要在创建dll时将-Wl,--addstdcall别名添加到我的.bat文件中
swig -c++ -java -package preprocessor Point.i
g++ -c -std=c++11 Point.cpp Point_wrap.cxx -I E:\ProgramFiles\jdk\include -I E:\ProgramFiles\jdk\include\win32
g++ -shared Point_wrap.o Point.o -Wl,--add-stdcall-alias -o point.dll
rkapl,感谢您的回复 在哪里调用System.loadLibrary(“point.dll”)?我在创建新对象的方法之前的静态块中调用它。point.dll位于根项目文件夹中。dll是在32位计算机上编译的?(也许您可以将生成的dll上传到某个地方?)依赖项(GCC调试垃圾、libgcc___dw2-1.dll、libstdc++-6.dll)是否位于路径/的同一目录中?这并不能解释为什么它可以在64位上工作,但请检查它。我将tdmGCC\bin包含在系统路径变量中,并且我尝试在这个文件夹中编译dll,libgcc___dw2-1.dll、libstdc++-6.dll等都位于这个文件夹中。同样的错误。
swig -c++ -java -package preprocessor Point.i
g++ -c -std=c++11 Point.cpp Point_wrap.cxx -I E:\ProgramFiles\jdk\include -I E:\ProgramFiles\jdk\include\win32
g++ -shared Point_wrap.o Point.o -Wl,--add-stdcall-alias -o point.dll