3
我使用swig將C++轉換爲Java。 我使用g ++來創建DLL和編譯。Swig C++到Java UnsatisfiedLinkError
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添加到我的項目中時,我創建一個新對象時出現UnsatisfiedLinkError。它只在我使用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)
這是swig生成的,當我創建point = new Point()時發生錯誤的地方;
public Point() {
this(PointClassJNI.new_Point__SWIG_0(), true);
}
也許有人有這個問題。我會非常感謝任何幫助!
你在哪裏調用System.loadLibrary(「point.dll」)? – rkapl 2014-11-04 21:55:14
我在創建新對象的方法之前在靜態塊中調用它。位於根項目文件夾中的point.dll。 – Joks 2014-11-04 22:13:47
該DLL是在32位機器上編譯的? (也許你可以上傳得到的DLL的地方?) – rkapl 2014-11-04 22:19:48