BOOST Library installieren???
-
Hallo,
ich hab heute mal versucht die BOOST library mit dem Builder 6 zum Laufen zu bringen. Ich hab also die zip Datei runtergeladen, hab sie entpackt und hab mit make und make install (die Builder6 Variante) das ganze installiert. Dann hab ich im Bibliothekspfad den Pfad zum BOOST Ordner angegeben. Das Problem ist nur: wenn ich versuche irgendwelche BOOST Elemente zu verwenden bringt er mir einen Linker Fehler, daß er mit BOOST nichts anfangen kann.
Kann mir einer von euch da weiterhelfen?
Danke schon mal im Vorraus

-
Hallo
und wir können mit
bringt er mir einen Linker Fehler, daß er mit BOOST nichts anfangen kann
nichts anfangen.
bis bald
akari
-
OK, stimmt.
Also ich hab folgendes Beispielprogramm aus der BOOST library reinkopiert
#include <cassert> #include <string> #include <boost/iostreams/device/back_inserter.hpp> #include <boost/iostreams/filtering_stream.hpp> namespace io = boost::iostreams; int main() { using namespace std; string result; io::filtering_ostream out(io::back_inserter(result)); out << "Hello World!"; out.flush(); assert(result == "Hello World!"); }Beim Starten gibt es dann diese Fehlermeldungen:
[C++ Fehler] Unit1.cpp(3): E2209 include-Datei 'boost\iostreams\device\back_inserter.hpp' kann nicht geöffnet werden
[C++ Fehler] Unit1.cpp(4): E2209 include-Datei 'boost\iostreams\filtering_stream.hpp' kann nicht geöffnet werden
[C++ Fehler] Unit1.cpp(6): E2090 Qualifizierer 'boost' ist kein Name einer Klasse oder einer Struktur
[C++ Fehler] Unit1.cpp(6): E2282 Name eines Namensbereichs erwartet
[C++ Fehler] Unit1.cpp(13): E2316 'filtering_ostream' ist kein Element von 'io'
[C++ Fehler] Unit1.cpp(13): E2379 In Anweisung fehlt ;
[C++ Fehler] Unit1.cpp(14): E2451 Undefiniertes Symbol 'out'Ich hoffe das reicht erstmal
-
Hallo,
jau das sieht ganz danach aus, dass er die include Datei nicht laden kann. Dann kennt der Compiler auch die boost Typen nicht und ist ziemlich verwirrt.
Da Bei dir der Compiler die angegebenen include-Dateien nicht finden kann, sag ihm doch unter Projekte Optionen und dort unter Compiler und dann Pfade und Definitionen einfach das Verzeichnis, wo die boost-includes liegen. Dann sollte es doch schon eher klappen.
Da mir boost gerade nichts sagt, warscheinlich musst du auch noch eine lib oder eine dll-lib dem Projekt hinzufügen.
VG und guten Rutsch
Pixfreak
-
Jau, das wars erstmal schon. Ich hab immer im Bibliothekspfad die Pfadangabe gemacht. Jetzt im include Pfad. Damit geht schon mal vieles.
Wenn ich aber einen Thread erzeugen möchte kommt für den Beispielscode#include <boost/thread/thread.hpp> #include <boost/thread/xtime.hpp> #include <iostream> struct thread_alarm { thread_alarm(int secs) : m_secs(secs) { } void operator()() { boost::xtime xt; boost::xtime_get(&xt, boost::TIME_UTC); xt.sec += m_secs; boost::thread::sleep(xt); std::cout << "alarm sounded..." << std::endl; } int m_secs; }; int main(int argc, char* argv[]) { int secs = 5; std::cout << "setting alarm for 5 seconds..." << std::endl; thread_alarm alarm(secs); boost::thread thrd(alarm); thrd.join(); }diese Fehlermeldung: [Linker Fataler Fehler] Fatal: Unable to open file 'BOOST_THREAD-BCB-MT-1_33_1.LIB'
ich hab mal nachgesucht und ich finde im lib Verzeichnis verschiedene BOOST lib's, aber nicht die da.
Und dabei hab ich gemerkt, daß ich den Zusammenhang zwischen Include Dateien und libs vom Prinzip glaub ich noch nicht durchdrungen habe. Also: Weiß jemand bei meinem Problem weiter und kann mir irgendjemand mit dem Prinzipiellen Aufbau auf die Sprünge helfen?Vielen Dank schon mal
-
Moin,
frohes Neues wünsche ich.
Füge doch die passende Lib mit Hilfe des Projektmanagers deinem Projekt hinzu.
Dann sollte es gehen.VG Pixfreak
-
Das Problem ist, ich finde diese Lib nirgends!!!!
-
Bau entweder das komplette Boost-Libs oder nur die Thread-Lib. Am besten mit bjam und nicht mit make. Wie man mit bjam umgeht, steht im Getting Started der Boost Doku bzw. auf der Boost Homepage. Der komplette Boost-Build-Vorgang dauert aber ca. 30 bis 60 Minuten. Wenn dir das zu lange dauert, kannst du mit bjam auch nur eine bestimmte Lib (z.B. die Thread-Lib) bauen. Doku findet man im Thread-Lib-Verzeichnis.
Im Prinzip gilt: will man nicht nur Template-basierte Boost-Libs nutzen, kommt man nicht drum herum sich mit bjam auseinander zu setzen (zumindest als Benutzer!). make wird von den Boost-Entwicklern nicht wirklich unterstützt.