Threadart auch Linux kompatibel?



  • Boost ist eine Library-Sammlung. Es ist keine große Einheit. Es wird alles mögliche gesammelte, was von der Community über ein Abstimmungsverfahren akzeptiert wird (kann jeder mitmachen!).

    Es muß auch nicht unbedingt was mit Platformen zu tun haben. Die Mehrheit der Boost-Libs haben nichts mit Platformen, sondern sind einfach für jeden C++ler nützlich: String-Verarbeitung, Parser, Smartpointer, Signal/Slots usw.

    Und nur ein kleiner Teil ist für Platform-Unabhängigkeit, wie z.B. Threads oder Dateisystem-Zugriffe (Verzeichnisse auslesen usw.).


  • Administrator

    WAR][FIRE schrieb:

    Wenn das stimmt ...

    Ich lüge doch nicht und es steht ja auch auf der Boostseite ... tz 😃

    WAR][FIRE schrieb:

    ... und die Handhabung von Boost sehr einfach ist, ...

    Ich würde hier mal ein paar Warnungen platzieren:
    - Die Bibliotheken wurden so gebaut, dass sie sehr flexibel sind.
    - Dies führt allerdings dazu, dass sie zum Teil etwas komplex aufgebaut sind.
    - Gute Kenntnisse in C++ sind sehr zu empfehlen.
    - Und vor der Boost Dokumentation möchte ich die auch warnen. Sie ist sehr gut, was die Erklärung der Verwendung angeht, aber behandelt meistens kaum das eigentliche Thema. Also in der Boost.Thread Dokumentation wirst du zum Beispiel alles über die Verwendung von Boost.Thread finden, aber nichts darüber, wie man mit Threads umgehen sollte.

    WAR][FIRE schrieb:

    ... dann würden sich all meine plattformunabhängigkeitsprobleme ja in Luft auflösen

    Boost ist leider auch nicht die ultimative Lösung. Es hat noch bei weitem nicht für alles eine Bibliothek. GUI ist zum Beispiel überhaupt nicht vorhanden und wird es wohl auch nicht so bald geben. Es gibt viele Bereiche, welche nicht abgedeckt sind. Und Boost geht es ja auch nicht darum, alle Bereich abzudecken. Es sollen hilfreiche Werkzeuge bei der Entwicklung von Programmen geboten werden. Dinge, welche man immer wieder braucht.
    Die Werkzeuge und Bibliotheken sind deshalb auch allgemein gehalten. Sie sollen für ein breites Spektrum angewendet werden können. Das heisst dann wiederrum, dass man gewisse Dinge selber machen muss, wenn man einen Spezialfall hat.

    Grüssli



  • Nun komm ich auch direkt mit dem ersten Fehler.

    Laut der Einführung bei boost.org benötigt die Thread Bilbliothek eine Library. Diese soll eingebunden werden wenn man den Ordner "Lib" aus dem Boost_1_39_0 Verzeichnis als Libary Verzeichnis angibt.

    Der Compiler(Visual Studio) jagt folgende Fehlermeldung raus:

    Error 1 fatal error LNK1104: cannot open file 'libboost_thread-vc90-mt-gd-1_39.lib' boost_threads boost_threads

    Dabei gibt es diese Library in diesem Ordner (Lib) garnicht.....

    .... Wieso war mir dieses Boost Projekt vorher eigentlich noch nicht bekannt gewesen?..... *grübel grübel* :p


  • Administrator

    WAR][FIRE schrieb:

    Dabei gibt es diese Library in diesem Ordner (Lib) garnicht.....

    Hast du auch die Boost Bibliotheken korrekt über Bjam kompiliert? Steht zwar auch in der Einführung, aber aus einem unerklärlichen Grund überspringen es 99% der Leser, wahrscheinlich weil sie die Seite nicht genau genug lesen ...

    Grüssli



  • Na, du mußt die Library ja erstmal bauen, mit bjam! Den Getting Started Link hat dir Davere ja bereits genannt.

    Die meisten Boost-Libs sind reine Header-Libs (weil Templates!). Aber manche wenige Libs sind als Binary-Libs nötig (und Boost.Thread gehört dazu). Die musst du für deine Platform und für deinen Compiler selber bauen! Das kann Boost garnicht leisten, weil schon der Build für MSVC bei mir >500 MByte groß ist. Wenn die das für jeden Compiler und Platform zum Download bereit stellen würden, würde boost.org explodieren.

    Also, Getting Started lesen!



  • Das hier ist vielleicht auch noch interessant.
    http://www.highscore.de/cpp/boost/



  • Artchi schrieb:

    Das kann Boost garnicht leisten, weil schon der Build für MSVC bei mir >500 MByte groß ist. Wenn die das für jeden Compiler und Platform zum Download bereit stellen würden, würde boost.org explodieren.

    Ok das klingt logisch. Mein armer Prozessor leidet gerade ganz schön beim erstellen mit bjam 🕶

    Hoffentlich klappt es dann. Man man das spart sich echt eine menge Arbeit mit Boost. Selbst wenn es nicht soo einfach ist wie du schon sachtest.
    Aber eine gute Sache für Programmierer ist es allemal 🙂

    Das das wird in meine Bachelorarbeit mit einfließen, die ich möglichst schnell fertig bekommen möchte 😃 kann sein das ich ab und an daher nochmal nerfen werde 😉

    Edit:

    Braunstein schrieb:

    Das hier ist vielleicht auch noch interessant.
    http://www.highscore.de/cpp/boost/

    Diese Sprache lässt sich gleich 5 x fließender lesen. Thx 😉



  • *klopf* *klopf*

    *guck ob Artchi und Dravere nicht schon mitm Knüppel auf mich warten*

    Keiner da 😃

    Also ich hab da noch zwei Fragen:

    1. bjam hat nun 2 ziemlich große Ordner erstellt. Einmal den "Stage" Ordner mit den Librarys und einmal einen "bin.v2" der unter anderem DLL Files und Objektdateien enthält. Kann ich den "bin.v2" Ordner löschen?

    2. Ich bekomme hier gerade sehr erfolgreich (für den ersten Versuch) Threads zum laufen. Nun finde ich aber nichts zum Thema Socket erstellung. Spezieller: Aufbau einer Verbindung über das TCP-IP Protokoll. Gibt es da bei boost auch was zu? Ich finde leider nichts 😕

    Gruß
    WAR][FIRE 🙂



  • Zu 2.
    Boost.Asio bietet eine Socket Library.
    Simon



  • theta schrieb:

    Zu 2.
    Boost.Asio bietet eine Socket Library.
    Simon

    Ist dort auch ein einfacher Datenaustausch via. recv(..) und send(..) möglich?



  • Dieses v2 kannste Löschen. Eintragen mußt du in die MSVC-Verzeichnis-Optionen:

    Für Includes:
    C:\Boost_XXXX

    Wenn TR1 mit dabei sein soll:

    *C:\Boost_XXXX\boost\tr1\tr1
    C:\Boost_XXXX
    *
    Für Libs:
    C:\Boost_XXXX\stage\lib


  • Administrator

    WAR][FIRE schrieb:

    Ist dort auch ein einfacher Datenaustausch via. recv(..) und send(..) möglich?

    Also ehrlich:
    Tutorial: http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/tutorial.html
    Referenz: http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/reference.html

    Lies selber nach, lesen kannst du ja wohl noch, oder? Und schon nur die Frage. Eine Socketbibliothek, welche keinen Datenaustausch zulässt? Was wäre das für eine seltsame Bibliothek?

    Grüssli


Anmelden zum Antworten