1
在Java和JNI中使用Matlab,我得到一個UnsatisfiedLinkError,我無法理解。Matlab + Java + JNI:java.lang.UnsatisfiedLinkError
首先我從Matlab命令行加載本地庫。它的工作原理:
>> java.lang.System.load('/usr/local/share/OpenCV/java/libopencv_java.so')
然後,我打電話與本機庫中實現的Java函數:
>> org.opencv.core.Mat
Java exception occurred:
java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_Mat()J
at org.opencv.core.Mat.n_Mat(Native Method)
at org.opencv.core.Mat.<init>(Mat.java:441)
它的抱怨無法找到org.opencv.core.Mat.n_Mat().J,但該符號在。所以:
[email protected]:/usr/local/share/OpenCV/java$ nm libopencv_java.so | grep Mat_n_1Mat
0000000000027780 T Java_org_opencv_core_Mat_n_1Mat__
00000000000316c0 T Java_org_opencv_core_Mat_n_1Mat__DDI
00000000000312a0 T Java_org_opencv_core_Mat_n_1Mat__DDIDDDD
00000000000318a0 T Java_org_opencv_core_Mat_n_1Mat__III
00000000000314b0 T Java_org_opencv_core_Mat_n_1Mat__IIIDDDD
0000000000030fa0 T Java_org_opencv_core_Mat_n_1Mat__JII
0000000000031120 T Java_org_opencv_core_Mat_n_1Mat__JIIII
所以,如果它裝載有正確的符號本地庫,爲什麼我得到一個UnsatisifiedLinkError?
看看您是否可以在VM中啓用jni調試輸出。您可能會發現REPL爲每個新命令使用新的類加載器(或其他上下文),這會導致共享庫被卸載。 – technomage 2013-03-22 10:33:55