2012-07-02 10 views
5

Sto provando a creare un client BitTorrent a linea di comando utilizzando libotorrent di Rasterbar, che dipende da Boost . Ho costruito entrambe le librerie Boost e la biblioteca libtorrent utilizzando le rispettive direzioni, ma quando provo a costruire il mio progetto ottengo i seguenti errori di collegamentoVS2010 Simbolo esterno non risolto boost :: asio :: detail :: winsock_init_base :: throw_on_error quando si collega il sistema boost con un progetto utilizzando 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]@[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]) 

E sembra indicare che l'ASIO :: dettagli namespace didn essere inclusi nella libreria del sistema boost in quanto sono solo i 5 simboli con cui sembra avere un problema e che si collegano alla libreria del sistema boost in caso contrario. Sto cercando di creare un'applicazione a 32 bit su un sistema a 64 bit, ma tutto ciò che ho controllato sembra essere configurato correttamente per questo.

So che mi manca qualcosa, ma non riesco a capire cosa. Qualcuno ha qualche suggerimento?

+0

Provare a definire BOOST_ASIO_SEPARATE_COMPILATION –

+0

Ho provato sia BOOST_ASIO_SEPARATE_COMPILATION che BOOST_ASIO_DYN_LINK e non funziona. l'unica differenza è che gli errori includono __declspec (dllimport) davanti alle definizioni delle funzioni quando viene utilizzato dyn_link. –

+0

Come hai creato libtorrent? quale versione di libtorrent stai usando? sembra che tu non stia collegando la libreria boost.asio, che dovrebbe essere stata creata come parte di libtorrent, in src/asio.cpp – Arvid

risposta

3

Con BOOST_ASIO_SEPARATE_COMPILATION definito, oltre a #include "boost/asio/ssl/impl/src.hpp", è necessario anche includere "boost/asio/impl/src.hpp" in uno dei file cpp.

+0

Ho avuto lo stesso problema o un problema simile e questo ha funzionato. Grazie –

Problemi correlati