Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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

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

我在编译和创建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.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