访问boost绑定时共享库中的C++符号查找错误

 周家华099_359 发布于 2023-01-31 08:12

我正在尝试将多线程添加到我的库中,所以我正在为我的库创建一个线程执行器.为此我使用boost线程.

这是我在运行链接到库的测试用例时遇到的错误:

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模板,以帮助共享库从boost_thread库加载符号.我并不完全确定这样做的最佳方法,如果这是正确的方法来加载东西.

总结一下:错误似乎涉及无法从我的共享库加载libboost_thread中定义的符号.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有