gpt4 book ai didi

c++ - Boost::OSX 上的线程链接错误?

转载 作者:行者123 更新时间:2023-11-30 04:38:45 26 4
gpt4 key购买 nike

因此,我正在疯狂地尝试解决这个问题。这是我的基本设置:

我正在编译一个共享库,其中包含大量使用大量 boost 功能的核心功能。我们将这个库称为 libpf_core.so。它与 boost 静态库链接,特别是 python、系统、文件系统、线程和 program_options 库。这一切都进行得很顺利。

现在,我有一个名为 test_socketio 的小测试程序,它被编译到一个共享库中(它在运行时作为插件加载)。它使用了一些 boost 的东西,比如 boost::bind 和 boost::thread,并且它再次链接了 libpf_core.so(其中包含 boost 库,请记住)。

当我去编译 test_socketio 时,在我所有的插件中它给我一个链接错误:

[ Building test_socketio ]
g++ -c -pg -g -O0 -I/usr/local/include -I../include test_socketio.cc -o test_socketio.o
g++ -shared test_socketio.o -lpy_core -o test_socketio.so
Undefined symbols:
"boost::lock_error::lock_error()", referenced from:
boost::unique_lock<boost::mutex>::lock() in test_socketio.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

我快要发疯了,想弄清楚这是为什么。我已经尝试将 boost::thread 显式链接到插件中但无济于事,尝试确保我使用的是与链接到 libpf_core.so 的库关联的 boost header ,以防那里发生冲突。

有没有我遗漏的关于 boost 的 OSX 特定内容?在我的谷歌搜索中,我看到许多其他人遇到了这个错误,但似乎没有人提出令人满意的解决方案。

编辑:明白了,OSX 在/usr/local/include 中带有 boost 1.40。需要将我的 boost 版本的 header 放在某个地方,并确保我的插件首先看到这些 header 。

最佳答案

您需要链接到 libboost_thread。添加 -lboost_thread 开关。

关于c++ - Boost::OSX 上的线程链接错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2981641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com