未定义的引用“boost :: system :: system_category()”

时间:2013-10-11 10:41:22

标签: c++ boost codeblocks undefined-reference

obj\Debug\src\SQLite3DB.o||In function _static_initialization_and_destruction_0:|
D:\workspace-cpp\boost_1_54_0_beta1\boost\system\error_code.hpp|222|undefined reference to boost::system::generic_category()|
D:\workspace-cpp\boost_1_54_0_beta1\boost\system\error_code.hpp|223|undefined reference to boost::system::generic_category()|
D:\workspace-cpp\boost_1_54_0_beta1\boost\system\error_code.hpp|224|undefined reference to boost::system::system_category()|
||=== Build finished: 3 errors, 0 warnings (0 minutes, 4 seconds) ===|

在将boost/filesystem.hpp包含在我的项目中之后,上面是我的完整错误消息。我看到一些帖子说添加-lboost_system可能会解决这个问题,但我不知道在CodeBlocks中该怎么办!
我已经花了一天时间来解决这个问题。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

右键单击项目名称;单击“构建选项...”;转到“链接器设置”;点击“添加”;找到该库并添加它。

enter image description here enter image description here enter image description here enter image description here

此外,您可以添加一些自定义变量,以简化调试/发布和32 / 64bit目标选项的管理。我会留给你的。


修改

以下是来自error_code.hpp的错误代码:

# ifndef BOOST_SYSTEM_NO_DEPRECATED
    inline const error_category &  get_system_category() { return system_category(); }
    inline const error_category &  get_generic_category() { return generic_category(); }
    inline const error_category &  get_posix_category() { return generic_category(); }
    static const error_category &  posix_category = generic_category();
    static const error_category &  errno_ecat     = generic_category();
    static const error_category &  native_ecat    = system_category();
# endif

如您所见,定义BOOST_SYSTEM_NO_DEPRECATED将禁用它。我测试了它,它的工作原理。这编译:

#define BOOST_SYSTEM_NO_DEPRECATED
#include <boost/system/error_code.hpp>

int main(void)
{

}