2012-07-02 12 views
5

Estoy intentando construir un cliente de BitTorrent de línea de comando usando el libtorrent de Rasterbar, que depende de Boost . He construido tanto las bibliotecas Boost y la biblioteca libtorrent usando sus direcciones respectivas, pero cuando intento de construir mi proyecto consigo los siguientes errores que unenVS2010 Símbolo no resuelto Extender boost :: asio :: detail :: winsock_init_base :: throw_on_error al enlazar boost-system con un proyecto usando 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]) 

parece indicar que el espacio de nombres didn asio :: detalle Queda incluido en la biblioteca del sistema de impulso, ya que son solo esos 5 símbolos con los que parece tener un problema y, de lo contrario, está enlazando a la biblioteca del sistema boost. Estoy intentando construir una aplicación de 32 bits en un sistema de 64 bits, pero todo lo que he comprobado parece estar configurado correctamente para esto.

Sé que me estoy perdiendo algo, pero parece que no puedo entender qué. ¿Alguien tiene alguna sugerencia?

+0

Trate de definir BOOST_ASIO_SEPARATE_COMPILATION –

+0

He intentado tanto BOOST_ASIO_SEPARATE_COMPILATION como BOOST_ASIO_DYN_LINK y ninguno funciona. la única diferencia es que los errores incluyen __declspec (dllimport) delante de las definiciones de función cuando se usa dyn_link. –

+0

¿Cómo construiste libtorrent? ¿Qué versión de libtorrent estás usando? parece que no estás enlazando con la biblioteca boost.asio, que debería haber sido creada como parte de libtorrent, en src/asio.cpp – Arvid

Respuesta

3

Con BOOST_ASIO_SEPARATE_COMPILATION definido, además de #include "boost/asio/ssl/impl/src.hpp", también debe #incluir "boost/asio/impl/src.hpp" en uno de sus archivos cpp.

+0

tuve el mismo problema o uno similar y esto funcionó. Gracias –

Cuestiones relacionadas