boost库之asio使用出错:error LNK2001,boost::system::generic_category

来源:互联网 发布:java semaphore 实现 编辑:程序博客网 时间:2024/06/07 09:41

错误现象:

      在使用boost库之asio库时,出现以下错误:

      error LNK2001: 无法解析的外部符号 "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAAEBVerror_category@12@XZ)
      error LNK2001: 无法解析的外部符号 "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAAEBVerror_category@12@XZ)


解决办法:
      boost安装目录:D:/boost。
      找到D:/boost/boost_1_53_0/include/boost-1_53/boost/system/error_code.hpp。
      在error_code.hpp文件开头添加宏定义:#define BOOST_ERROR_CODE_HEADER_ONLY。

      出现错误:fatal error C1083: 无法打开包括文件:“boost/../libs/system/src/error_code.cpp”: No such file or directory。

      在error_code.hpp最后几行中,将#   include <boost/../libs/system/src/error_code.cpp> 改为#   include <../../libs/system/src/error_code.cpp>。


上文来自:http://blog.163.com/tfn2008@yeah/blog/static/11032131920146811957865/



BOOST asio 例程daytime不使用库编译方法

在不使用lib库编译daytime client程序时,按照《Boost程序库完全开发指南》添加的定义

#define BOOST_REGEX_NO_LIB
#define BOOST_DATE_TIME_SOURCE
#define BOOST_SYSTEM_NO_LIB

编译时会产生:

error LNK2019: 无法解析的外部符号 "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ),该符号在函数 "public: __thiscall boost::system::error_code::error_code(void)" (??0error_code@system@boost@@QAE@XZ) 中被引用

error LNK2019: 无法解析的外部符号 "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ),该符号在函数 "void __cdecl boost::system::`dynamic initializer for 'posix_category''(void)" (??__Eposix_category@system@boost@@YAXXZ) 中被引用

解决方法:

在boost的system库的error_code.hpp源代码中发现
#define BOOST_ERROR_CODE_HEADER_ONLY

可以解决这个问题。

添加此定义以后编译成功

上文来自:http://www.cnblogs.com/sunws-king/archive/2013/07/24/3210382.html



error LNK2019: 无法解析的外部符号 "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ),该符号在函数 "public: __thiscall boost::system::error_code::error_code(void)" (??0error_code@system@boost@@QAE@XZ) 中被引用

error LNK2019: 无法解析的外部符号 "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ),该符号在函数 "void __cdecl boost::system::`dynamic initializer for 'posix_category''(void)" (??__Eposix_category@system@boost@@YAXXZ) 中被引用

解决办法:

看到源代码中有这么一个宏:BOOST_ERROR_CODE_HEADER_ONLY,定义就不会报错了


error LNK2005: "class boost::system::error_code boost::system::throws" (?throws@system@boost@@3Verror_code@12@A) 已经在 main.obj 中定义

解决办法:

查看源代码,发现只要定义了BOOST_SYSTEM_NO_DEPRECATED宏,就不出报这个问题


上文来自:http://blog.csdn.net/longhumen1214/article/details/37967761

阅读全文
0 0
原创粉丝点击