我刚开始使用升压首次,详细信息:
- 我使用Visual Studio 2008 SP1
- 我在做一个64位编译
- 我使用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逸岸链接。
我解决了这个问题。 我内置了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
#include <boost/system/config.hpp>
就我而言,BOOST_LIB_DIAGNOSTIC没有显示系统正在自动连接在一起。我简单的包含升压/系统/ config.hpp解决了这个。
我有同样的问题。 我尝试了所有上述,但没有什么帮助。 解决办法很简单:首先我有一个空的项目工作,在那里我有链接错误LNK2019。 但是,当我与stdafx.h中,targetver.h和stdafx.cpp文件创建新的默认Win32控制台应用程序一切正常。 可能这将是为别人有用,我花两天这个
如果你在项目中使用的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/
我通过搜索的链接错误加CMake的来到了这个问题,所以我的情况下,任何人在这里加入此评论其他人发现这个问题的方法相同。
原来,在我的情况下,链接错误一个错误是由于:
add_definitions(-DBOOST_ALL_DYN_LINK)
在CMakeLists.txt
,这是很好的为Unix,但不是我的是Windows。 解决的办法是不使用的,在Windows定义。
我需要两个版本,并使用阶段的目标,所以我用--stagedir = / stageX86的x86版本和x64的默认./stage
我也来到这里从这个连接错误加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)”