VS2010 Неразрешен външен символ boost::asio::detail::winsock_init_base::throw_on_error при свързване на boost-system с проект, използващ 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 и нито едно не работи. единствената разлика е, че грешките включват __declspec(dllimport) пред дефинициите на функцията, когато се използва dyn_link.   -  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