提高连接错误:无法解析的外部符号“类boost ::系统:: error_category常量和__

2019-05-11 22:50发布

我刚开始使用升压首次,详细信息:

  1. 我使用Visual Studio 2008 SP1
  2. 我在做一个64位编译
  3. 我使用boost ::仅ASIO(和它有任何依赖性)

我的代码编译现在,我指着我的项目在Boost库(具有内置64位库)之后,得到了过去简单的问题,我现在面临着一个链接错误:

2>BaseWebServer.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::get_system_category(void)" (?get_system_category@system@boost@@YAAEBVerror_category@12@XZ)
2>BaseWebServer.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::get_generic_category(void)" (?get_generic_category@system@boost@@YAAEBVerror_category@12@XZ)

有任何想法吗?


我添加了这个定义:#定义BOOST_LIB_DIAGNOSTIC

现在在我的输出我看到这一点:

1>Linking to lib file: libboost_system-vc90-mt-1_38.lib
1>Linking to lib file: libboost_date_time-vc90-mt-1_38.lib
1>Linking to lib file: libboost_regex-vc90-mt-1_38.lib

这似乎表明它在系统的lib逸岸链接。

Answer 1:

我解决了这个问题。 我内置了32位的库时,我曾打算建64位库。 我搞掂我的生成声明,并内置64位库,而现在它的工作原理。

这是我的bjam命令行:

C:\Program Files (x86)\boost\boost_1_38>bjam --build-dir=c:\boost --build-type=complete --toolset=msvc-9.0 address-model=64 architecture=x86 --with-system


Answer 2:

#include <boost/system/config.hpp>

就我而言,BOOST_LIB_DIAGNOSTIC没有显示系统正在自动连接在一起。我简单的包含升压/系统/ config.hpp解决了这个。



Answer 3:

您需要在boost_system库链接



Answer 4:

我有同样的问题。 我尝试了所有上述,但没有什么帮助。 解决办法很简单:首先我有一个空的项目工作,在那里我有链接错误LNK2019。 但是,当我与stdafx.h中,targetver.h和stdafx.cpp文件创建新的默认Win32控制台应用程序一切正常。 可能这将是为别人有用,我花两天这个



Answer 5:

如果你在项目中使用的boost ::系统 ,你应该使用和任命的boost ::系统库的x86或x64版本。

你可以重新编译Boost库与下面的批处理文件。 这些保存Boost的根文件夹,在CMD窗口(不要双击!)运行:

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


cd boost_1_60_0
call bootstrap.bat

rem Most libraries can be static libraries
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/



Answer 6:

我通过搜索的链接错误加CMake的来到了这个问题,所以我的情况下,任何人在这里加入此评论其他人发现这个问题的方法相同。

原来,在我的情况下,链接错误一个错误是由于:

    add_definitions(-DBOOST_ALL_DYN_LINK)

CMakeLists.txt ,这是很好的为Unix,但不是我的是Windows。 解决的办法是不使用的,在Windows定义。



Answer 7:

我需要两个版本,并使用阶段的目标,所以我用--stagedir = / stageX86的x86版本和x64的默认./stage



Answer 8:

我也来到这里从这个连接错误加CMake的,但对我来说这是一个事实,即CMake的默认情况下将尝试建立与默认32位。 这种固定通过指定-Ax64

cmake -Ax64 {path to CMakeLists.txt}


文章来源: Boost linker error: Unresolved external symbol “class boost::system::error_category const & __cdecl boost::system::get_system_category(void)”