访问Boost Bind时,共享库中的C 符号查找错误
C++ Symbol lookup error in shared library when accessing boost bind
我正在尝试将多线程添加到我的库中,因此我正在为我的库创建线程执行程序。为此,我使用的是升压线程。
这是我运行链接到库的测试用例时遇到的错误:
symbol lookup error: libmylibexample.so.0: undefined symbol: _ZTVN5boost6detail16thread_data_baseE
这是我的共享库中的代码行,导致错误:
MyNameSpace::Producer producer = MyNameSpace::Producer();
threads.create_thread(boost::bind(&MyNameSpace::Producer::run, &producer));
我正在使用Autotools和libtool编译库。该代码可以很好地编译。然后,我创建了一个试图引用库的测试用例。这是编译测试案例的汇编令:
g++ -I. -I../include -g -O2 -MT runTest-runTest.o -MD -MP -MF .deps/runTest-runTest.Tpo -c -o runTest-runTest.o `test -f 'runTest.cc' || echo './'`runTest.cc
这是我的链接阶段:
mv -f .deps/runTest-runTest.Tpo .deps/runTest-runTest.Po
/bin/bash ../libtool --tag=CXX --mode=link g++ -g -O2 ../libmylibexample/libmylibexample.la -o runTest runTest-runTest.o -lboost_system -lboost_filesystem -lboost_regex -lboost_thread-mt -lfftw3 -ltiff
libtool: link: g++ -g -O2 -o .libs/runTest runTest-runTest.o ../libmylibexample/.libs/libmylibexample.so -lboost_system -lboost_filesystem -lboost_regex -lboost_thread-mt -lfftw3 /usr/lib/x86_64-linux-gnu/libtiff.so
我的一位同事建议初始化与线程有关的一些提升模板,以帮助共享库从boost_thread库中加载符号。我并不是完全确定这样做的最佳方法,如果这是使事情被加载的正确方法。
因此,要包装问题:错误似乎涉及无法从我的共享库中加载libboost_thread中定义的符号。
正如错误指示的那样,您需要将libmylibexample
与libboost_thread
链接。
相关文章:
- 与Qt交叉编译到Raspberry Pi 3B+通讯录(协议缓冲区)-错误符号查找错误
- 符号查找错误未定义的符号:curl_mime_init
- 即使存在NM报告符号,在运行时的符号查找错误也是如此
- 指向符号的指针与常规符号查找的 ABI 稳定性
- Orocos LTTng 符号查找错误:/path/to/liborocos-rtt-traces-gnulinux.s
- caffe convert_imageset:符号查找错误
- 动态链接到 c++ 静态成员字段时符号查找失败
- 部署后的Linux qt应用程序-符号查找错误:libQt5Core.so.5未定义的符号:uncv_getDefaul
- 访问Boost Bind时,共享库中的C 符号查找错误
- LD_BIND_NOW:符号查找错误,但可执行文件仍在运行
- 如何捕捉符号查找错误
- JNI 问题:DLL 中的文件句柄出现符号查找错误C++
- 运行时出现符号查找错误
- 未定义的符号 - 符号查找错误
- libstdc++中出现奇怪的符号查找错误
- 符号查找错误(c++)
- Java JNI符号查找错误
- c++运行时符号查找错误,ubuntu
- 在运行时而不是加载时出现符号查找错误
- 符号查找错误时,使用我的Qt插件从共享库内部