我正在嘗試使用Java本地接口。java.lang.UnsatisfiedLinkError JNI錯誤
我創建一個共享庫對象.so文件通過使用這些命令
ln -s /usr/local/java/jdk1.7.0_21/include /usr/include/JNILibForProj
gcc -I /usr/include/JNILibForProj -c -Wall -w -fpic CppCode.cpp
gcc -shared -o libCppCode.so CppCode.o
我放在/ usr/lib中 的.so文件我從那裏加載其他的庫文件。
然而,當我試圖加載正確使用
System.loadLibrary("CppCode");
我得到錯誤的庫作爲
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/libCppCode.so: /usr/lib/libCppCode.so: undefined symbol: _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
其他.so文件在同一位置的負載。所以文件的位置不是問題。我也嘗試編譯與g ++,但我得到相同的錯誤信息。
任何幫助,將不勝感激!謝謝!
編輯 其實我在CPP中寫了一些opencv代碼,我試圖通過JNI鏈接。我正在使用這一行來創建.so文件。我不是在g ++ ood,請你檢查一下我寫的是否正確?
g++ -I/usr/local/include/opencv -I/usr/local/java/jdk1.7.0_21/include -I/usr/include/JNILibForProj -L/usr/local/lib -O0 -g3 -Wall -w -c -fpic -Wl,--add-stdcall-alias -shared -o "/home/shikhar/Desktop/myLib/libCppCode.so" "../src/CppCode.cpp" -lopencv_core -lpHash -lopencv_imgproc -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_flann -lopencv_highgui -lstdc++
。所以創建和複製它後,/ usr/lib目錄 以前的錯誤消息已經但是現在我越來越
僅ET_DYN和ET_EXEC可以裝載
編輯2
經過大量的打擊和審判,我已經找到了解決方案。請檢查我的答案。
Can y ou請檢查我編輯的問題嗎?謝謝! –