2015-04-22 5 views
6

Und kein Wunder, da es keine solche Datei in ...\boost_1_58_0\stage\lib gibt. Wie kann ich einen bekommen? Ich habe nur:2> LINK: Schwerwiegender Fehler LNK1104: Datei kann nicht geöffnet werden 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 

dort drin. Versucht zu kompilieren Boost mit enden verschiedene Optionen mit --build-type=complete es Anheften (dem „arme Mannes“ Lösung von Linker error LNK1104 with 'libboost_filesystem-vc100-mt-s-1_49.lib') zu erhalten:

> 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 

die Befehlszeilen in der readme des Projektes vorgeschlagen werden, die ich importieren bin - immer noch keine freude. Es ist ein CMake-Projekt, für das ich einige Anstrengungen unternommen habe, um eine MSVS-Lösung zu erstellen.

NB: mein Problem wurde gelöst, als vorsichtig bei der CMake gui suchen:

enter image description here

erkennen ich, dass es die Debug-Konfiguration ist, die nicht bauen und sicher genug, wenn ich direkt an der „Lösung angeklickt "> Configuration Manager> zu einem Release-Build geändert alles war in Ordnung. Noch bleibt die Frage - wie bekomme ich diese libboost_filesystem-vc120-mt-sgd -1_58.lib baut?

Antwort

12

Sie müssten runtime-link=static runtime-debugging=on variant=debug in der b2 Befehlszeilenargumente haben, um sgd zu bekommen.

Vom boost docs über Bibliothek Namensgebung auf Windows (speziell der ABI-Tag-Abschnitt):

ABI tag: kodiert für Details, die die Bibliothek der Interoperabilität mit anderen kompilierten Code beeinflussen. Für jede solche Funktion wird ein einzelner Brief an den Tag hinzugefügt:

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 Dank - sind 'Variante = release' und' Variante = debug' exklusiv? Mit anderen Worten, es würde reichen, einfach 'runtime-debugging = on variant = debug 'in meiner Kommandozeile hinzuzufügen (ich habe bereits' runtime-link = static') –

+1

Ich denke, wenn man 'variant' komplett lässt, baut es sich auf debuggen und standardmäßig freigeben. Ich denke auch * (nicht sicher), dass es standardmäßig "runtime-debugging = on" wählt, wenn es die Debug-Version erstellt. Versuchen Sie im Grunde, Ihren ursprünglichen Befehl ohne das Flag "variant" auszuführen. – Fraser

+0

Die 'Variante' und sicher genug'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- 1_58.lib' wurden hinzugefügt - (4 mal größer als die anderen Varianten) - schließend :) –

Verwandte Themen