VS2010 Неразрешенный внешний символ boost::asio::detail::winsock_init_base::throw_on_error при связывании системы повышения с проектом, использующим libtorrent

Я пытаюсь создать небольшой клиент BitTorrent для командной строки, используя libtorrent Rasterbar, который зависит от Boost. Я создал библиотеки Boost и библиотеку libtorrent, используя соответствующие направления, но когда я пытаюсь собрать свой проект, я получаю следующие ошибки связывания.

1>------ Build started: Project: MiniBT, Configuration: Debug Win32 ------
1>MiniBT.obj : error LNK2019: unresolved external symbol "protected: static void __cdecl boost::asio::detail::winsock_init_base::throw_on_error(struct boost::asio::detail::winsock_init_base::data &)" (?throw_on_error@winsock_init_base@detail@asio@boost@@KAXAAUdata@1234@@Z) referenced in function "public: __thiscall boost::asio::detail::winsock_init<2,0>::winsock_init<2,0>(bool)" (??0?$winsock_init@$01$0A@@detail@asio@boost@@QAE@_N@Z)
1>MiniBT.obj : error LNK2019: unresolved external symbol "protected: static void __cdecl boost::asio::detail::winsock_init_base::startup(struct boost::asio::detail::winsock_init_base::data &,unsigned char,unsigned char)" (?startup@winsock_init_base@detail@asio@boost@@KAXAAUdata@1234@EE@Z) referenced in function "public: __thiscall boost::asio::detail::winsock_init<2,0>::winsock_init<2,0>(bool)" (??0?$winsock_init@$01$0A@@detail@asio@boost@@QAE@_N@Z)
1>MiniBT.obj : error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::asio::error::get_misc_category(void)" (?get_misc_category@error@asio@boost@@YAABVerror_category@system@3@XZ) referenced in function "void __cdecl boost::asio::error::`dynamic initializer for 'misc_category''(void)" (??__Emisc_category@error@asio@boost@@YAXXZ)
1>MiniBT.obj : error LNK2019: unresolved external symbol "unsigned long __cdecl boost::asio::detail::win_tss_ptr_create(void)" (?win_tss_ptr_create@detail@asio@boost@@YAKXZ) referenced in function "public: __thiscall boost::asio::detail::win_tss_ptr<class boost::asio::detail::call_stack<class boost::asio::detail::win_iocp_io_service,unsigned char>::context>::win_tss_ptr<class boost::asio::detail::call_stack<class boost::asio::detail::win_iocp_io_service,unsigned char>::context>(void)" (??0?$win_tss_ptr@Vcontext@?$call_stack@Vwin_iocp_io_service@detail@asio@boost@@E@detail@asio@boost@@@detail@asio@boost@@QAE@XZ)
1>MiniBT.obj : error LNK2019: unresolved external symbol "protected: static void __cdecl boost::asio::detail::winsock_init_base::cleanup(struct boost::asio::detail::winsock_init_base::data &)" (?cleanup@winsock_init_base@detail@asio@boost@@KAXAAUdata@1234@@Z) referenced in function "public: __thiscall boost::asio::detail::winsock_init<2,0>::~winsock_init<2,0>(void)" (??1?$winsock_init@$01$0A@@detail@asio@boost@@QAE@XZ)

Кажется, это указывает на то, что пространство имен asio::detail не было включено в библиотеку boost-system, так как это только те 5 символов, с которыми у него возникла проблема, и в противном случае оно прекрасно связывается с библиотекой boost-system. . Я пытаюсь создать 32-битное приложение в 64-битной системе, но все, что я проверял, похоже, правильно настроено для этого.

Я знаю, что что-то упускаю, но не могу понять, что. У кого-нибудь есть предложения?


person Richard McDaniel    schedule 02.07.2012    source источник
comment
Попробуйте определить BOOST_ASIO_SEPARATE_COMPILATION   -  person Igor R.    schedule 02.07.2012
comment
Я пробовал и BOOST_ASIO_SEPARATE_COMPILATION, и BOOST_ASIO_DYN_LINK, и ни один из них не работает. единственное отличие состоит в том, что при использовании dyn_link ошибки включают __declspec(dllimport) перед определениями функций.   -  person Richard McDaniel    schedule 02.07.2012
comment
Как вы собрали libtorrent? какую версию libtorrent вы используете? похоже, что вы не связываетесь с библиотекой boost.asio, которая должна была быть создана как часть libtorrent, в src/asio.cpp   -  person Arvid    schedule 15.02.2013


Ответы (1)


С определением BOOST_ASIO_SEPARATE_COMPILATION в дополнение к #include "boost/asio/ssl/impl/src.hpp" вы также должны #include "boost/asio/impl/src.hpp" в один из ваших файлов cpp.

person Erik Hvatum    schedule 08.02.2013