使用Boost源代码的链接器错误
Linker Errors using Boost Sourcecode
我有一个无法摆脱的问题。我有一个小的私人项目,我想使用asio网络通信和boost线程。我不想在我的机器上安装boost,所以我在我的项目中集成了源代码。为此,我创建了一个包含boost线程和asio的全局标头,如下所示:
#include "boost/asio.hpp"
#include "boost/thread.hpp"
这样我可以毫无问题地构建静态库,但共享库或可执行文件会导致链接器错误:
error LNK2019: unresolved external symbol "private: bool __cdecl boost::thread::join_noexcept(void)" (?join_noexcept@thread@boost@@AEAA_NXZ) referenced in function "public: void __cdecl boost::thread::join(void)" (?join@thread@boost@@QEAAXXZ)
error LNK2019: unresolved external symbol "class boost::thread::id __cdecl boost::this_thread::get_id(void)" (?get_id@this_thread@boost@@YA?AVid@thread@2@XZ) referenced in function "public: void __cdecl boost::thread::join(void)" (?join@thread@boost@@QEAAXXZ)
error LNK2019: unresolved external symbol "public: class boost::thread::id __cdecl boost::thread::get_id(void)const " (?get_id@thread@boost@@QEBA?AVid@12@XZ) referenced in function "public: void __cdecl boost::thread::join(void)" (?join@thread@boost@@QEAAXXZ)
error LNK2019: unresolved external symbol "private: bool __cdecl boost::thread::do_try_join_until_noexcept(unsigned __int64,bool &)" (?do_try_join_until_noexcept@thread@boost@@AEAA_N_KAEA_N@Z) referenced in function "private: bool __cdecl boost::thread::do_try_join_until(unsigned __int64)" (?do_try_join_until@thread@boost@@AEAA_N_K@Z)
error LNK2019: unresolved external symbol "public: void __cdecl boost::thread::interrupt(void)" (?interrupt@thread@boost@@QEAAXXZ) referenced in function "public: __cdecl NetworkAdapter::~NetworkAdapter(void)" (??1NetworkAdapter@@QEAA@XZ)
error LNK2019: unresolved external symbol "public: bool __cdecl boost::thread::joinable(void)const " (?joinable@thread@boost@@QEBA_NXZ) referenced in function "public: __cdecl NetworkAdapter::~NetworkAdapter(void)" (??1NetworkAdapter@@QEAA@XZ)
到目前为止,在项目中使用boost作为源的当前配置是:
#define BOOST_SYSTEM_SOURCE
#define BOOST_DATE_TIME_NO_LIB
#define BOOST_REGEX_NO_LIB
#define BOOST_THREAD_DYN_LINK
#define BOOST_THREAD_DYN_DLL
#define BOOST_THREAD_BUILD_DLL
#define BOOST_CHRONO_HEADER_ONLY
#define BOOST_DATE_TIME_NO_LIB
如果没有此配置,链接器请求*。Lib文件的线程,chrono等。根据boost主页线程和Asio是头只有,那么为什么链接器寻找lib,缺少符号-而不是使用头?那么我做错了什么呢?
欣赏每一个提示:-)
最诚挚的问候,丹
来自boost threading网站
提振。线程依赖于一些非头文件库。
提振。System:此依赖项是强制性的,您需要链接和图书馆一起。提振。Chrono:这个依赖项是可选的(见下文)如何配置),你将需要与库链接,如果你使用一些与时间相关的接口。提振。DateTime:这依赖是强制性的,但即使Boost。DateTime是一个非参数仅头文件库Boost。线程只使用头文件的部分,所以原则上你不需要链接到库。
所以你错了-它不仅仅是头。
相关文章:
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- CMake 错误:链接器命令失败,退出代码为 1 和 cpp.o 文件
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 如何修复 clang: 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- 使用cmake错误链接boost日志
- 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用):在 Macbook 上
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- clang:错误:链接器命令失败,C++代码中的退出代码为 1(使用 -v 查看调用)
- 静态库中的 g++ 错误链接函数
- 未定义的参考错误链接天然函数Android
- C++编译错误:ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v
- QT Q_PROPERTY错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- OSX MOJAVE -LD:架构X86_64 clang找不到符号:错误:链接器命令失败,出口代码1
- C 错误链接器命令失败了出口代码1(使用-V查看调用)
- LD:架构x86_64 clang找不到符号:错误:链接器命令失败,出口代码1(使用-v to See
- 聚输出错误 - 链接列表
- Xcode链接器错误:链接器命令失败,退出代码为1(使用-v查看调用)
- 尝试构建C DLIB示例无法与数百个未定义的参考错误链接