我正在尝试使用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请检查我编辑的问题吗?谢谢! –