Windows VS2013/x64: Link-Fehler mit boost 1.63



  • Hallo,

    Ich habe boost 1.63 erstellt mit:

    b2.exe toolset=msvc-12.0 architecture=x86 address-model=64 variant=release link=shared threading=multi runtime-link=shared
    

    Weiterhin habe ich ein Programm, das Funktionen von boost/filesystem benutzt, als Projekt für VS2013. Dort ist Release und x64 eingestellt.

    Wenn ich nun das Programm übersetzen will, dann bekomme ich beim Linken den Fehler: LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc120-mt-1_63.lib'
    Das ist auch soweit richtig, weil ich diese Datei gar nicht habe. Es gibt aber die Library boost_filesystem-vc120-mt-1_63.lib .

    Von chrone gibt es beispielsweise beide Varianten, wobei libboost_chrono... mit 397 KB deutlich größer ist als boost_chrono... mit 22 KB. Dafür gibt es zu boost_chrono... noch eine DLL.

    Meine Frage wäre nun: Hab ich beim Erstellen von boost einen Fehler gemacht, weswegen die fehlende Datei nicht erzeugt wird? Oder habe ich in den Projekteinstellungen einen Fehler gemacht, weswegen die falsche Library verlangt wird? Oder etwas ganz anderes?

    Viele Grüße,
    Ingo


  • Mod

    Nach meiner Kenntnis müsste dies LIB Datei auch erzeugt werden.

    Alle Lib Dateien die erzeugt werden und mit libboost beginnen, sind statische Bibliotheken, d.h. hier ist der erzeugte C++ code in Object Format enthalten. Die Datei, die mit dieser lib gelinkt wird, benötigt keine weitere DLL.

    Erzeugte lib Dateien die einfach mit boost beginnen sind nur eine lib, Dateien, die einen Verweis auf die entsprechende DLL und i.A. keinen Code enthalten. Das ausführbare Programm benötigt, dann die dazugehörige DLL.



  • Zum Spaß hab ich mal boost_filesystem-vc120-mt-1_63.lib in libboost_filesystem-vc120-mt-1_63.lib umbenannt. Das hat tatsächlich funktioniert, obwohl das eigentlich nicht die Lösung sein kann. Da boost_filesystem-vc120-mt-1_63.lib keine statische lib ist, wird zur Laufzeit nun boost_filesystem-vc120-mt-1_63.dll benötigt.
    Bei Gelegenheit probiere ich mal eine ältere Version von boost aus, um zu sehen, welche Libs dort gebaut werden.


Anmelden zum Antworten