Frage

Ich habe die Quelle für Launchy und ich versuche, es zu bauen in Visual Studio 2005.Der Launchy Projekt ist gebaut mit VC7 also ich hatte, um das Projekt zu aktualisieren, Dateien zu VC8 und dieser Prozess schien gut zu gehen.Jedoch, Launchy auch nutzt Boost 1.33.1 libs und was ich gebaut habe, sind die Boost-1.41.0 libs (Requisiten, um Boost für die neuere libs viel einfacher zu erstellen), damit ich auch aktualisiert, das Projekt zu zeigen, um meinem neuen Boost-libs installieren.Jetzt bekomme ich den folgenden linker-Fehler:

fatal error LNK1104: cannot open file 'libboost_regex-vc80-mt-sgd-1_41.lib'

Ich hatte einen Blick in die Boost-lib-Verzeichnis und die beste übereinstimmung, die ich finden konnte, ist...

libboost_regex-vc80-mt-gd-1_41.lib

Beachten Sie das fehlende "s".Ich verstehe nicht, was der Unterschied in der libs ist, und ob Visual Studio ist auf der Suche für die falsche Sache oder meine Boost-build-Prozess fehlgeschlagen zu bauen, die richtigen libs.Kann jemand mich in die richtige Richtung?

Als experiment habe ich eine Kopie der regex-lib, die ich habe, und benannte Sie um, was der linker sucht.Das gibt mir eine lange Liste von linker-Fehler über die Symbole bereits defined in msvcrtd.lib, wie die folgenden:

error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in libcmtd.lib(typinfo.obj)

Ich versuche, die Boost-1.33.1 libs und Stelle mein Launchy-Projekt-Datei auf, dass statt.Aber ich würde immer noch gerne wissen, was ist falsch mit meinem Boost-1.41.0-Bibliotheken.

Bearbeiten:Ich fand einen Hinweis in der Boost-docs zu dem, was das 's' libs sind:

Diese Bibliothek verwenden, wenn Sie statisch verknüpfen, um die C++ standard-Bibliothek und compiler runtime support libraries.

So sieht es aus wie das 's' libs sind die richtigen.Jetzt muss ich nur noch herausfinden, wie Sie zu bauen.

Lösung:Ich war in der Lage zu bauen die fehlende boost-Bibliotheken mit dem folgenden Befehl-Linie.

bjam --build-type=complete msvc stage

Ich lief, dass nach der bereits ausgeführt wird boostrap.bat im Verzeichnis, wo boost-Leben.

War es hilfreich?

Lösung

Der Unterschied ist deutlich in Boost-docs beschrieben - "mt-sgd" bedeutet "debug, statisch gelinkte Laufzeitbibliotheken, multithreaded, mit Debug-Symbole". "Mt-gd" ist die gleiche, aber dynamisch verknüpften Laufzeitbibliotheken (d MSVCRTD.lib statt LIBCMTD.LIB).

So oder Projekteinstellungen ändern dynamische CRT-Verknüpfung verwenden (d / MDd statt / MTD), oder bauen Boost statisch Linken -. Mischen diejenigen funktionieren nicht richtig,

Andere Tipps

Welchen Befehl haben Sie verwendet, um zu bauen boost?versuchen Sie, build-type=complete.Normalerweise sollte das erstellen des s-libs zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top