В моем приложении я включил boost/system/error_code.hpp
(boost 1.58), но не хочу ссылаться на boost_system, но вместо этого имеет решение только для заголовка. Я читаю, определяя BOOST_ERROR_CODE_HEADER_ONLY
, что должно быть возможно. Но, к сожалению, он работает не так, как ожидалось. Я все еще получаю ошибку компоновщика для boost :: system :: system_category().BOOST_ERROR_CODE_HEADER_ONLY не имеет рекламируемого эффекта
Интересно, должно ли это работать вообще, и если да, то каким образом. Код в заголовке форсирования:
# 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() не существует тела. Как это может вообще работать без ссылки на lib?
Update:
В то же время я нашел, где определен органом этой декларации (в boost/system/detail/error_code.hpp
, который включен в файл boost/system/error_code.hpp
Еще не избежать ошибки компоновщика я работаю в.. XCode (LLVM C++ 11) и определили в настройках целевой BOOST_ERROR_CODE_HEADER_ONLY
, если это имеет значение.
Я пробовал это раньше и просто сдался, потому что это было более назойливым, чем я заботился. –
, пожалуйста, отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve), который неправильно ссылается –