2015-04-22 14 views
6

E non c'è da meravigliarsi se non esiste tale file in ...\boost_1_58_0\stage\lib. Come posso averne uno? Ho solo:2> LINK: errore irreversibile LNK1104: impossibile aprire il file 'libboost_filesystem-vc120-mt-sgd-1_58.lib'

boost_1_58_0\stage\lib\libboost_filesystem-vc120-mt-s-1_58.lib 
boost_1_58_0\stage\lib\libboost_filesystem-vc120-s-1_58.lib 

lì. Provato a compilare spinta con varie opzioni di finire con virata --build-type=complete ad essa (la soluzione "poveri" da Linker error LNK1104 with 'libboost_filesystem-vc100-mt-s-1_49.lib') per ottenere:

> b2 toolset=msvc threadapi=win32 link=static runtime-link=static \ 
variant=release address-model=32 --with-filesystem --with-locale --with-regex \ 
--with-system --with-iostreams --build-type=complete 

riga di comando viene suggerito nel readme del progetto che sto importando - ancora nessuna gioia. È un progetto di CMake in cui mi sono dato da fare per creare una soluzione MSVS.

NB: il mio problema è stato risolto quando guardando attentamente la GUI CMake:

enter image description here

mi sono reso conto che è la configurazione di debug che non ha costruito e abbastanza sicuro quando destra cliccato sul "soluzione "> Configuration Manager> modificato in una build di rilascio tutto andava bene. Resta comunque la domanda: come ottengo i build di libboost_filesystem-vc120-mt- sgd -1_58.lib?

risposta

12

Avresti bisogno di avere runtime-link=static runtime-debugging=on variant=debug nella riga di comando b2 args per ottenere sgd.

Dal boost docs sulla denominazione catalogo di Windows (in particolare la parte di tag ABI):

tag ABI: codifica particolari che influenzano l'interoperabilità della biblioteca con altro codice compilato. Per ciascuna di queste caratteristiche, una sola lettera si aggiunge al tag:

Key | Use this library when:        | Boost.Build option 
===================================================================================== 
s | linking statically to the C++ standard library and | runtime-link=static 
    | compiler runtime support libraries.     | 
------------------------------------------------------------------------------------- 
g | using debug versions of the standard and runtime  | runtime-debugging=on 
    | support libraries.         | 
------------------------------------------------------------------------------------- 
y | using a special debug build of Python.    | python-debugging=on 
------------------------------------------------------------------------------------- 
d | building a debug version of your code.    | variant=debug 
------------------------------------------------------------------------------------- 
p | using the STLPort standard library rather than the | stdlib=stlport 
    | default one supplied with your compiler.    | 
+0

Wow grazie - sono 'variante = release' e' variante = debug' esclusivo? In altre parole sarebbe sufficiente aggiungere 'runtime-debugging = on variant = debug' nella mia riga di comando sopra (ho già' runtime-link = static') –

+1

Penso che se si lascia 'variant' fuori del tutto si costruisce eseguire il debug e rilasciare di default. Anch'io penso * (non sicuro) che scelga 'runtime-debugging = on' di default quando costruisce la versione di debug. Fondamentalmente, prova a eseguire il tuo comando originale senza il flag 'variant'. – Fraser

+0

Eliminato il 'variant' e abbastanza sicuro' C: \ _ \ boost_1_58_0 \ stage \ lib \ libboost_filesystem-vc120-mt-sgd-1_58.lib C: \ _ \ boost_1_58_0 \ stage \ lib \ libboost_filesystem-vc120-sgd- Sono stati aggiunti 1_58.lib' (4 volte più grandi rispetto alle altre varianti) - chiusura :) –

Problemi correlati