如何解决JNI调用在我的cpp共享库中为basic_stringstream声明获取了符号查找错误
场景: CCPJNI.java对CPPJNI.cpp进行JNI调用,我在libCCBJNI.so中构建了这个CPPJNI.cpp 正确执行cpp代码,直到到达stringstream声明 然后错误: java:符号查找错误:... / libCCBJNI.so:未定义的符号:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev
CCBJNI.cpp
。
。
out
Java编译: javac -cp ccb.jar:/usr/lib/gcc/x86_64-linux-gnu/7/libgcc._s.so.1:libCCBJNI.so:json-simple-1.1.1.jar:azure-storage-4.2。 0.jar CCBTEST.java
javac -cp ccb.jar:LIBCCBJNI.so:json-simple-1.1.1.jar:azure-storage-4.2.0.jar com / shiseido / ccb / CCBJNI.java
Java运行: java -cp。:/ usr / lib / gcc / x86_64-linux-gnu / 7 / libgcc._s.so.1:ccb.jar:libCCBJNI.so:jackson-core-2.12.0-rc1.jar:json- simple-1.1.1.jar:azure-storage-4.2.0.jar CCBTEST
输出: 。 。 写0 java:符号查找错误:/mnt/c/Users/robsc/pahub-linux/pahub_scantech_platform_jniCopy7/Platform_JNI/CCBJNI/gdb2/CCBJNI/Remix/Source/libCCBJNI.so:未定义的符号:_ZNSt7__cxx1119basic_ostringstreamIcStc
注意:除了字符串流以外,还有更多的先前代码和先前输出可确认cpp代码和标准libRARY正常工作。
我正在使用在Windows上运行的visual Studio 2019构建libCCBJNI.so,并针对Linux进行构建
问题: 我该如何解决? 字符串流是否在单独的cpp共享库中? 如果是,那么库名是什么,我在哪里?如何在构建和运行时中包含它?
解决方法
似乎是环境问题。在Windows WSL上重新安装Ubuntu并发出后: sudo apt更新 须藤apt install build-essential 它没有任何无法解析的符号
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。