8

Sto provando a compilare il mio programma ma non si collegherebbe affatto. Ho specificato il percorso dei file boost di lib e il linker continua a lamentarsi. Ecco l'errore di collegamento ho ottenuto:Cercando di collegare il filo Boost 1.52

1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" ([email protected]@[email protected]@[email protected]@XZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" ([email protected]@[email protected]@[email protected]@XZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall boost::detail::thread_data_base::~thread_data_base(void)" ([email protected]@[email protected]@[email protected]) 
1>Edproj.obj : error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" ([email protected]@@[email protected]@@@Z) 
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::detach(void)" ([email protected]@[email protected]@QAEXXZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::join(void)" ([email protected]@[email protected]@QAEXXZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "private: void __thiscall boost::thread::start_thread(void)" ([email protected]@[email protected]@AAEXXZ) 
1>Edproj.obj : error LNK2001: unresolved external symbol "bool __cdecl boost::this_thread::interruptible_wait(void *,struct boost::detail::timeout)" ([email protected][email protected]@@[email protected]@[email protected]@Z) 

BOOST_LIB_DIAGNOSTIC torna

1> Linking to lib file: libboost_thread-vc100-mt-s-1_52.lib 
1> Linking to lib file: libboost_date_time-vc100-mt-s-1_52.lib 
1> Linking to lib file: libboost_system-vc100-mt-s-1_52.lib 
1> Linking to lib file: libboost_chrono-vc100-mt-s-1_52.lib 

Maggiori informazioni:

Sono in esecuzione a 64-bit di Windows 8 Pro e ho compilato spinta con la seguente opzione

bjam --build-type=complete --toolset=msvc10.0 address-model=64 architecture=x86 variant=debug,release threading=multi link=static runtime-link=static 

Qualcuno può dirmi cosa c'è che non va?

Aggiornamento:

Dopo aver cambiato per aumentare 1.51 si è sbarazzato 7 su 8 di tali errori del linker, ma questo è ancora persistente

error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" ([email protected]@@[email protected]@@@Z) 

Non capisco cosa sta succedendo qui. Questo è dal programma di installazione boostpro a 32 bit. Non potrebbe avere qualcosa a che fare con il mio file sorgente giusto?

Aggiornamento:

Ok ho risolto questo problema per spinta 1.51. Risulta nelle pagine delle proprietà >> C/C++ >> Generazione codice >> Abilita eccezioni C++ è stato disattivato per me.

OK. Cercherò di vedere se le stesse impostazioni risolvono il problema per boost 1.52. Aggiornerà più tardi.

+0

non può aiutare molto, ma ho utilizzato prebuilts dalla spinta-pro è un pacchetto di spinta precompilati con con installer –

+0

Sì, sto cercando di ottenere il build 1_51 tramite boost pro ora per vedere se riesco a farlo funzionare. –

+2

Buona cattura abilitando le eccezioni. Ha funzionato nel mio caso. –

risposta

0

Assicurarsi di aggiungere le directory corrette nelle proprietà del linker.

Leggi questo post per ulteriori dettagli Boost linker error: Unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::get_system_category(void)"

Inoltre hai avuto modo di aggiungere questo percorso nella directory Linker aggiunta:

$ (BOOST_ROOT) \ bin.v2 \ libs \ filo \ accumulo \ MSVC -xx.0 \ release \ address-model-64 \ collegamento-statica \ threading-multi

dove xx è la versione di visual Studio

+0

Ciao, mi sono imbattuto in quel post prima di pubblicare la mia domanda. Hanno fatto la roba dichiarata lì, ma ancora senza fortuna. –

+0

Puoi postare qui le tue directory di aggiunta Linker? –

+0

$ $ (BOOST) stage \ lib \; $ (LibraryPath) BOOST è C: \ Dev \ boost_1_52_0 \ –

0

Grazie sembra a me come il suo non automatico che collega in modo corretto.

Include path is boost152/ only 
Library path is boost152/stage/lib 
+0

Hmm ... Sono andato e ho fatto un contro check. Ho impostato il mio variabili d'ambiente come ad esempio: '$ (BOOST) =% DEV% \ boost_1_52_0 \' dove '% DEV% è C: \ dev \' e nella directory VC++ in proprietà che ha avuto il seguente: 'Include: $ (BOOST)' 'Libreria: $ (BOOST) stage \ lib \' –

0

Questi due definisce di seguito sono stati pasticciano con il mio linker, gettando una bella "LNK2001: simbolo esterno" errore. Hai quindi da qualche parte nel tuo codice?

//#define BOOST_FILESYSTEM_NO_DEPRECATED 
//#define BOOST_FILESYSTEM_NO_LIB 
1

Ho avuto lo stesso problema prima: Costruisco lib spinta con parametri di default che corrono bootstrap.bat direttamente.

se si utilizza boost :: system nel progetto, è necessario utilizzare e nominare la versione x86 o x64 di boost :: system lib.

è possibile ricompilare boost lib con questo pipistrello, salvarli per aumentare la cartella radice ed eseguirlo in finestre CMD (non fare doppio clic!):

call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86 

cd boost_1_60_0 
call bootstrap.bat 

rem Most libraries can be static libs 
b2 -j8 toolset=msvc-14.0 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/x64 
b2 -j8 toolset=msvc-14.0 address-model=32 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/win32 

pause 

per maggiori dettagli si può vedere questo articolo: https://studiofreya.com/2015/12/19/how-to-build-boost-1-60-with-visual-studio-2015/

Problemi correlati