错误LNK2019:未解析的外部符号“class boost :: system :: error_category

时间:2014-06-12 08:36:19

标签: c++ visual-studio boost boost-asio bjam

我在Visual Studio 2013上,下载了常规的boost库(版本1.55)并将它们安装到C:/ Program Files / Boost /

然后我创建了一个新的空C ++项目,并将以下内容添加到我的"包含目录":

  

C:\ Program Files \ Boost \ boost_1_55_0;

这是我的代码:

#include <boost/asio.hpp>
#include <iostream>

int main(int argc, char * argv[])
{
    boost::asio::io_service io_service;

    for (int x = 0; x < 42; ++x)
    {
        io_service.poll();
        std::cout << "Counter: " << x << std::endl;
    }

    return 0;
}

bootstrap./b2执行完毕后,我将以下路径添加到&#34;其他库依赖项&#34;:

  

C:\ Program Files \ Boost \ boost_1_55_0 \ stage \ lib

但是我收到以下错误消息:

Main.obj : error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAAEBVerror_category@12@XZ) referenced in function "public: __cdecl boost::system::error_code::error_code(void)" (??0error_code@system@boost@@QEAA@XZ)
Main.obj : error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAAEBVerror_category@12@XZ) referenced in function "void __cdecl boost::system::`dynamic initializer for 'errno_ecat''(void)" (??__Eerrno_ecat@system@boost@@YAXXZ)

如果我转到C:\Program Files\Boost\boost_1_55_0\stage\lib,则其中包含:

  • libboost_system-VC120-MT-1_55
  • libboost_system-VC120-MT-GD-1_55

更新:看来我的标题没有正确构建或某些内容丢失。我刚从这里下载并运行了安装程序:

http://sourceforge.net/projects/boost/files/boost-binaries/1.55.0/

VS 2013是msvc12

然后我正常设置我的附加库依赖项。

2 个答案:

答案 0 :(得分:1)

尝试在项目设置中将/Gd更改为/Gr。这可能是由于调用约定的不同。

答案 1 :(得分:1)

下面的这两个定义搞乱了我的链接器,抛出一个美丽的“LNK2001:未解析的外部符号”。你的代码中有什么地方吗?

#define BOOST_FILESYSTEM_NO_DEPRECATED
#define BOOST_FILESYSTEM_NO_LIB