Boost libs linken/einbinden?
-
Ok, also ich habe:
- boost 1_35_0 installer runtergeladen und installiert (Visusal C++ 2005)
- dabei alle Varianten bauen lassen
- unter Directories: includes "C:\boost_1_35_0" und libs "C:\boost_1_35_0\libs eingefügt.scheint auch halbwegs zu funktionieren!
schonmal DankeNun bekomme dennoch einen Fehler bei meinem Testcode:
// Boost Dateien includieren #include "boost/filesystem/operations.hpp" #include "boost/filesystem/fstream.hpp" #include <iostream> using namespace std; // Benutze fs für den Boost filesystem Namensraum namespace fs = boost::filesystem; int main() { fs::remove_all("foobar"); fs::create_directory("foobar"); ofstream file("foobar/cheeze.txt"); file << "tastes good!\n"; file.close(); if (!fs::exists("foobar/cheeze.txt")) cout << "Something is rotten in foobar\n"; return 0; }
Fehlermeldung:
LINK : fatal error LNK1104: Datei "libboost_filesystem-vc80-mt-s-1_35.lib" kann nicht geöffnet werden.Habe leider nur die EE Edition, hoffe es liegt nicht daran!
Danke für eure Hilfe :p
-
Ich glaube das Libs-Verzeichnis stimmt so nicht. Du musst jenes angeben, wo du die libs reingebuildet hast.
-
ist es das nicht?
also da sind zumindest in den jeweiligen Unterverzeichnissen dann im Folder "src" die jeweiligen .hpp und .cpp files drinnen.
-
Das sind ja auch nicht die Libs!!! Das sind die Sourcen!
Die Libs heißen so, wie der Linker auch die fehlende Datei bennent. Oder was glaubst du, vermisst er da:LINK : fatal error LNK1104: Datei "libboost_filesystem-vc80-mt-s-1_35.lib" kann nicht geöffnet werden.
Deutlicher gehts nun wirklich nicht. Und da wo diese Datei liegt, ist auch dein Boost-Libs Verzeichnis.
-
BarnieGeroellheimer schrieb:
Das sind ja auch nicht die Libs!!! Das sind die Sourcen!
Die Libs heißen so, wie der Linker auch die fehlende Datei bennent. Oder was glaubst du, vermisst er da:LINK : fatal error LNK1104: Datei "libboost_filesystem-vc80-mt-s-1_35.lib" kann nicht geöffnet werden.
Deutlicher gehts nun wirklich nicht. Und da wo diese Datei liegt, ist auch dein Boost-Libs Verzeichnis.
dann stimmt wohl was mit der Installation nicht, weil ich habe in dem kompletten Ordner boost keine .lib Files!
-
Hier:
http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html
Viel Spass beim lesen!
-
Ich kenne diesen Installer von Boost Consult nicht, aber der legt wahrscheinlich ein Verzeichnis C:\Boost\libs an. Schau da mal nach!
Wenn nicht: http://www.kharchi.eu/wiki/doku.php?id=cpp:boost:install
-
ok, ich glaub ich habs!
Zumindest die Boostgeschichte.
Jetzt bekomm ich leider die Fehlermeldung dass mir uuid.lib fehlt.
Glaube aber das is nun wirklich ein Express Edition Problem
-
Haste kein Platform SDK installiert?
-
-
ok, habe alles befolgt!
Danke war auch ein Lerneffekt vorhanden :pDoch das nächste Problem steht natürlich vor der Tür.
Jetzt zeigt der Compiler keine Fehler mehr an dafür kommt aber ein Error Window:"Diese Anwendung konnte aufgrund einer falschen Anwendungskonfiguartion nicht gestartet werden. Überprüfen sie die Manifestdatei auf mögliche Fehler."
-
Tja, scheint die Manifest-Datei falsch zu sein. Steht doch da. Aber eigentlich muß man gar keine Manifest selber schreiben. Die wird beim anlegen des Projektes eigentlich autom. erzeugt und funktioniert dann auch.
Ansonsten mal in die MSDN-Hilfe schauen...
-
Offentsichtlich weiß ich nicht genau was eine Manifestdatei ist!
Aber du kannst mich ja in den Kreis der Wissenden mit einschließen wenn du lust hast.Soll ich vielleicht mal Visual C++ neu installieren oder was is da los?
-
Ob eine Neuinstallation das ganze behebt, weiß ich nicht. Ich hatte noch nie solch eine Fehlermeldung. Vielleicht hilft es einfach, das Projekt neu anzulegen? Und sind auch alle Einstellungen nach der PlatformSDK-Installation korrekt von dir eingegeben?
Evtl. das Projekt/SOlution säubern? (im Build-Menü zu finden)
Eine Manifest-Datei ist eine Art Konfiguration für Side by Side Assemblies. Z.B. sagt man in der Manifest, welche DLL-Versionen genutzt werden sollen u.ä. Aber normalerweise muß man sich da nicht drum kümmern: Projekt anlegen, Build and Run.