2011-01-06 16 views
9

Ho eseguito bjam.exe --build-dir="C:\build-boost" --build-type=minimal msvc stageHo librerie boost statiche o dinamiche?

e ora ho le librerie Lib con queste intestazioni, ad esempio

libboost_serialization-vc100-mt 
libboost_serialization-vc100-mt-1_45 
libboost_serialization-vc100-mt-gd 
libboost_serialization-vc100-mt-gd-1_45 

Credo che queste dovrebbero essere le librerie statiche per il debug e rilasciare la versione. Quando eseguo il compilatore con Multi-threaded Debug (/MTd), restituisce un errore LNK1104: cannot open file 'libboost_serialization-vc100-mt-sgd-1_45.lib' Ne sta cercando uno con -sgd

dove sto andando storto?

+1

Forse puoi provare a costruire usando "--build-type = complete" poiché questo costruirà tutte le varianti supportate delle librerie.Vedi la sezione "5.3.4 Invoke bjam" in http://www.boost.org/doc /libs/1_42_0/more/getting_started/windows.html – yasouser

risposta

4

Hai le versioni dinamiche. Le statiche sono delimitate avendo la "s" nel nome. Assicurati di aver specificato link=static sulla riga di comando bjam. In caso contrario, dovrai ricostruire per creare le versioni statiche.

+0

suppone darmi qualche '.dlls' alla fine? Ho solo il '.libs' nella cartella degli stage. – snoz

+0

@snoz: stai cercando nella cartella sbagliata allora. Nelle finestre di Windows, le librerie vengono trattate come artefatti di build, che vengono quindi copiati nella cartella di output al completamento della compilazione di ciascuna libreria. Dovrai trovare dove si trova la directory che contiene sia le DLL che le librerie. –

2

ecco come lo scomposizione

libboost_serialization-VC100-mt-SGD-1_45.lib

lib- if boost library starts with lib then its a static library , shared library do not start with lib prefix. Also static library will have a '-s' in the name. 

mt- multi-threaded , obtained by specifying threading=multi when you ran bjam or b2.This is the default threading. 

g- use debug libraries for building the code 
d- build a debug version of your code 

Quindi il compilatore è alla ricerca di multi-threaded statica libreria di debug (mt-sgd) come è stata eseguita con/MTd (crea un file eseguibile con multithreading di debug utilizzando LIBCMTD.lib). Immagino che per impostazione predefinita debba cercare la libreria statica. Se si desidera una libreria dinamica, inserire queste righe nel codice o di definire una macro

#define BOOST_ALL_DYN_LINK 
20

Qualcosa che è una specie di confusione è che ci sono due opzioni 'statici' per la costruzione di spinta con MSVC.

B2.exe accetta l'opzione link=static che indica a Boost che si desidera collegare l'IT in modo statico. Se si sta compilando il progetto VC con/MT o/MTd, sarà inoltre necessario utilizzare l'opzione runtime-link=static per indicare boost che si collegherà alle librerie di runtime VC in modo statico.

È il secondo runtime-link=static che inserisce il simbolo -s nel nome .lib.

La mia linea di comando per la costruzione di spinta era

b2.exe --toolset=msvc variant=release link=static threading=multi runtime-link=static stage 
+0

Sto avendo un sacco di problemi con questo, ma con un sacco di diverse dipendenze, non solo boost. Penso che tu abbia appena fatto clic per me! (3 anni dopo). –

Problemi correlati