2012-07-02 3 views
5

Я пытаюсь создать небольшую клиентскую консоль BitTorrent с помощью libtorrent Rasterbar, которая зависит от Boost , Я построил обе библиотеки форсировки и в Libtorrent библиотеку с использованием их соответствующих направлений, но когда я пытаюсь построить мой проект я получаю следующие ошибки, связывающиеVS2010 Неразрешенный внешний символ boost :: asio :: detail :: winsock_init_base :: throw_on_error при соединении boost-system с проектом с использованием 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 &)" ([email protected][email protected]@[email protected]@@[email protected]@@Z) referenced in function "public: __thiscall boost::asio::detail::winsock_init<2,0>::winsock_init<2,0>(bool)" ([email protected][email protected]@[email protected]@[email protected]@QA[email protected][email protected]) 
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)" ([email protected][email protected]@[email protected]@@[email protected]@[email protected]) referenced in function "public: __thiscall boost::asio::detail::winsock_init<2,0>::winsock_init<2,0>(bool)" ([email protected][email protected]@[email protected]@[email protected]@[email protected][email protected]) 
1>MiniBT.obj : error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::asio::error::get_misc_category(void)" ([email protected]@[email protected]@@[email protected]@[email protected]) referenced in function "void __cdecl boost::asio::error::`dynamic initializer for 'misc_category''(void)" ([email protected]@[email protected]@@YAXXZ) 
1>MiniBT.obj : error LNK2019: unresolved external symbol "unsigned long __cdecl boost::asio::detail::win_tss_ptr_create(void)" ([email protected]@[email protected]@@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)" ([email protected]@[email protected][email protected]@[email protected]@@[email protected]@[email protected]@@@[email protected]@[email protected]@[email protected]) 
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 &)" ([email protected][email protected]@[email protected]@@[email protected]@@Z) referenced in function "public: __thiscall boost::asio::detail::winsock_init<2,0>::~winsock_init<2,0>(void)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 

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

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

+0

Попробуйте определить BOOST_ASIO_SEPARATE_COMPILATION –

+0

Я пробовал оба BOOST_ASIO_SEPARATE_COMPILATION и BOOST_ASIO_DYN_LINK и не работал. единственная разница заключается в том, что ошибки включают __declspec (dllimport) перед определениями функций, когда используется dyn_link. –

+0

Как вы создали libtorrent? какую версию libtorrent вы используете? кажется, что вы не связываетесь с библиотекой boost.asio, которая должна была быть построена как часть libtorrent, в src/asio.cpp – Arvid

ответ

3

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

+0

У меня была такая же или аналогичная проблема, и это сработало. Спасибо –