c++ - 尝试链接 Boost 1.52 线程

标签 c++ visual-c++ compiler-errors boost-thread visual-c++-2010

我正在尝试编译我的程序,但它根本无法链接。我已经指定了 boost lib 文件的路径,但链接器仍然报错。这是我得到的链接错误:

1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall boost::detail::thread_data_base::~thread_data_base(void)" (??1thread_data_base@detail@boost@@UAE@XZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" (?throw_exception@boost@@YAXABVexception@std@@@Z)
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::detach(void)" (?detach@thread@boost@@QAEXXZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::join(void)" (?join@thread@boost@@QAEXXZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "private: void __thiscall boost::thread::start_thread(void)" (?start_thread@thread@boost@@AAEXXZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "bool __cdecl boost::this_thread::interruptible_wait(void *,struct boost::detail::timeout)" (?interruptible_wait@this_thread@boost@@YA_NPAXUtimeout@detail@2@@Z)

BOOST_LIB_DIAGNOSTIC 返回

1>  Linking to lib file: libboost_thread-vc100-mt-s-1_52.lib
1>  Linking to lib file: libboost_date_time-vc100-mt-s-1_52.lib
1>  Linking to lib file: libboost_system-vc100-mt-s-1_52.lib
1>  Linking to lib file: libboost_chrono-vc100-mt-s-1_52.lib

更多信息:

我运行的是 64 位 Windows 8 Pro,我使用以下选项编译了 boost

bjam --build-type=complete --toolset=msvc10.0 address-model=64 architecture=x86 variant=debug,release threading=multi link=static runtime-link=static

谁能告诉我哪里出了问题?

更新:

在更改为 boost 1.51 后,它消除了 8 个链接器错误中的 7 个,但这个错误仍然存​​在

error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" (?throw_exception@boost@@YAXABVexception@std@@@Z)

我不明白这里发生了什么。这个来自 boostpro 32 位安装程序。它不会与我的源文件有关吧?

更新:

好的,我已经为 boost 1.51 解决了这个问题。结果在属性页 >> C/C++ >> 代码生成 >> 启用 C++ 异常对我来说是关闭的。

好的。我将尝试查看相同的设置是否可以解决 boost 1.52 的问题。稍后更新。

最佳答案

我之前遇到过同样的问题:我使用默认参数构建 boost 库,直接运行 bootstrap.bat

如果您在项目中使用boost::system,您应该使用并指定x86 或x64 版本的boost::system 库。

你可以用这个bat重新编译boost lib,将它们保存到boost根文件夹并在CMD窗口中运行它(不要双击!):

call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86

cd boost_1_60_0
call bootstrap.bat

rem Most libraries can be static libs
b2 -j8 toolset=msvc-14.0 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/x64
b2 -j8 toolset=msvc-14.0 address-model=32 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/win32

pause

更多详情可以看这篇文章: https://studiofreya.com/2015/12/19/how-to-build-boost-1-60-with-visual-studio-2015/

关于c++ - 尝试链接 Boost 1.52 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14674374/

相关文章:

c++ - 为什么 C/C++ 没有内置包含保护功能?

c++ - SQLITE_CANTOPEN - Windows C++

c++ - 在 vector C++ 中存储类

c++ - Mac 上的 Qt::Sheet 和 QMessageBox::show()

c++ - 如何将类成员函数的返回类型设置为私有(private)结构的对象

visual-c++ - 如何在不重建的情况下触发 VS 构建后事件

c++ - 为什么在 header 中的类声明中声明变量时会出现错误?

ios - Xcode降级错误

compiler-errors - indy-10.2.0.1/fpc/IdStackUnix.pas(610,19)错误: Identifier not found “socket”

c++ - 从 .tsv 文件中读入