【发布时间】:2015-06-29 07:48:58
【问题描述】:
在我的应用程序中,我包含 boost/system/error_code.hpp (boost 1.58) 但不想链接到 boost_system,而是有一个仅标题的解决方案。我通过定义BOOST_ERROR_CODE_HEADER_ONLY 来阅读这应该是可能的。但不幸的是,它没有按预期工作。我仍然收到 boost::system::system_category() 的链接器错误。
我想知道这是否应该有效,如果可以,如何。 boost header中的代码是:
# ifdef BOOST_ERROR_CODE_HEADER_ONLY
inline const error_category & system_category() BOOST_SYSTEM_NOEXCEPT;
inline const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT;
#else
BOOST_SYSTEM_DECL const error_category & system_category() BOOST_SYSTEM_NOEXCEPT;
BOOST_SYSTEM_DECL const error_category & generic_category() BOOST_SYSTEM_NOEXCEPT;
#endif
如您所见,没有为 system_category() 定义主体。如果不链接到库,这怎么能工作?
更新:
与此同时,我发现该声明的主体是在哪里定义的(在 boost/system/error_code.hpp 文件中包含的 boost/system/detail/error_code.hpp 中。但它仍然不能避免链接器错误。我正在使用 XCode(llvm C+ +11) 并在目标设置中定义了BOOST_ERROR_CODE_HEADER_ONLY,如果这很重要的话。
【问题讨论】:
-
我之前试过这个,然后就放弃了,因为它比我关心的更麻烦。
-
请发一个链接不正确的MCVE