Boost libs linken/einbinden?
-
Hallo André,
erstmal vielen Dank für deine Antwort!
Sorry dass das Thema hier nicht reinpasst, aber ich dachte das wäre eine MFC und Visual C++ Abteilung.Also den Installer hab ich runtergeladen und auch installed... ich dachte nur ich müsste trotzdem noch mit BJam die Bibliotheken bilden?
Dann hab ich das wohl doppelt gemoppelt oder wie?Naja gut...
und wie genau erstelle ich eine Umgebungsvariable?Danke im Voraus
geneticZ
-
Gib doch die Pfade direkt in Visual Studio an:
Tools->Options->Projects and Solutions->VC++ DirectoriesDort einmal "Include Files" und einmal "library Files" anwählen und den Pfad zu den Boost-Headern bzw. Libs angeben.
Also z.B bei den includes "C:\boost_1_35_0" und bei den libs "C:\boost_1_35_0\libs"
-
Stefan schrieb:
Gib doch die Pfade direkt in Visual Studio an:
An sich kann man das machen, und vermutlich wird es dem OP auch reichen. Ich bin aber ein Arbeitsumfeld gewöhnt, bei dem die Inkludeverzeichnisse auf unterschiedlichen Verzeichnissen liegen können (und Eine Umgebungsvarible dabei hilft diese Rechnerspezifischen Abhängigkeiten zu reduzieren).
Wenn man alleine oder in einen konsistenten Programmierumfeld arbeitet geht es natürlich einfacher. Anderseits hilft meine Variante auch wenn man den Code weitergibt (weil nur die Umgebungsvariable gesetzt werden muss).
Falls der OP dennoch wissen will wie es mit Umgebungsvariablen funktioniert:
Etwas abhängig von der Windowsversion über Systemeinstellungen/System gibt es entweder direkt eine Karteireiteransicht (dort unter Erweitert/Umgebungsvariablen) oder dann noch mit einem zusätzlichen Klick links auf erweiterte Systemeinstellungen [Vista] und dann wie oben... Dort einfach als Wertepaar eintragen.(Bei mir steht es unter Systemvariablen, da ich mit mehreren Benutzerkonten arbeiten kann; Und sieht wie folgt aus: [Name der Variablen:][BoostDir], [Wert der Variablen][t:\boost]).
cu André
-
Vielen Dank an euch beide!
Das hilft mir schonmal sehr.
Sollte ich die Boost Libraries als Multithread oder Multithread, static runtime oder was anderes builden?
... und worin liegt da der Unterschied bzw was bewirkt was?
Danke
geneticZ
-
Lass doch alle Varianten bauen!
Die Boost-Headers suchen sich per #pragma selbst die richtige Lib aus. Als MSVC-User hat man diesen Komfort, das die Boost-Jungs das in den Headern definiert haben. MSVC muß halt nur wissen, wo die Libs liegen.
-
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.