Problem mit pthread.h



  • Hallo,

    wollte ein paar Threads programmieren, aber der Compiler hat ein Problem mit dem include von <pthread.h>. Wo bekommen ich dieses h-File her?
    Ich benutze Borland C++ Builder.

    Danke schon einmal im voraus
    cash21



  • Die Windows-Dateisuche hast du schon bemüht?



  • Ja hab ich, Borland sagt aber:

    [C++ Error] Thread.h(4): E2209 Unable to open include file 'pthread.h'

    Keine Ahnung, woran das liegt, ich kenn mich mit Threads nicht so gut aus, wollte jetzt erst damit anfangen.



  • Na Wahnsinn. Dass der Compiler sich vom reinen Benutzen der Dateisuche beeindrucken lassen würde hast du doch nicht wirklich geglaubt, oder? 😉

    Du musst den Pfad zur Datei ermitteln und diesen entweder im include explizit angeben oder aber in die Projektoptionen mit aufnehmen.



  • Ja wenn ich das aber mache, kann ich das Projekt ja nicht exportieren, da der Pfad dann auf anderen Systemen auch passen muss.
    Oder nicht?



  • Die Include-Pfade müssen ohnehin immer an das jeweilige System angepasst werden, schliesslich installiert nicht jeder seinen Compiler und/oder Quell-Dateien in dasselbe Verzeichnis.
    Das ist das nette an den Projektoptionen im Gegensatz zur expliziten Pfaden im Code: man muss nicht jede Datei einzeln anpassen.



  • Ja ich habe aber das Problem, das ich das fertige Projekt jemanden geben muss und dann muss es dort auf dem System laufen. Wenn alle h-Files im Projektverzeichnis sind, habe ich das Problem nicht.



  • Niemand kann von dir verlangen, dass dein Projekt ohne Anpassungen auf einem fremden Rechner kompilierbar ist.
    Die Include-Pfade etc. sind immer an die lokalen Gegebenheiten anzupassen oder zumindest zu kontrollieren, das ist selbstverständlich.

    Alle Header, Sourcen und Bibliotheken in das Projektverzeichnis zu kopieren ist natürlich möglich. Allerdings ist es bei Projekten, die etwas komplexer als HelloWorld sind, absolut unpraktikabel und ganz allgemein einfach unprofessionell.

    Davon abgesehen würde ich es begrüssen, wenn du wieder auf das ursprüngliche Thema zurückkommst (so es dazu noch Fragen gibt), denn das hier hat ja nichts mehr mit pthread.h und auch nicht speziell mit dem BCB zu tun.



  • Ja da muss ich mal schauen.
    Bin aber immer noch nicht weitergekommen mit den Threads.
    Geht es auch anders, ohne diese h-Datei (pthread.h)?
    Weil mit der Datei haut es nicht so richtig hin.



  • Hallo cash21,
    ich benutze den BCB 5 und habe auf meinem System nach deinem h-File gesucht und nicht gefunden. Gefunden habe ich _thread.h. TThread ist in Classes.h deklariert. Ich nehme an dass du diesen h-File includet hast.

    Na ja wirkliche Hilfe war das wohl auch nicht
    Evi48


  • Mod

    Hallo

    unter BCB6 prof. ist diese Datei vorhanden
    (....\include\stlport\...)

    MfG
    Klaus



  • Die Datei hab ich auch gefunden. Aber irgendwie klappt es auch mit der nicht.
    er erkennt trotzdem, meine Bezeichner in den Klassen nicht.
    Deswegen wollte ich eine andere Möglichkeit finden. Gibt es die?
    Das Beispiel mit den Threads habe ich hier gefunden:
    http://www.mario-konrad.ch/index.php?page=30105

    Und das ist dieses h-File pthread.h includiert.



  • ist denn der Pfad wo die Datei liegt in den Include-Verzeichnissen der Projektoptionen eingetragen?

    -junix



  • Ich hab den vollständigen Pfad in den Projektoptionen mit aufgenommen, steht dort auch mit drin.
    C:\Programme\Borland\CBuilder6\Include\stlport\pthread.h

    Oder ist das vielleicht die falsche die im Borland mit dabei ist. Gibt es dieses h-File irgendwo?



  • Was du eingetragen hast ist Pfad + Dateiname.
    Benötigt wird der Pfad.

    Um der nächsten Frage gleich vorzubeugen: beim Compilieren wirst du wahrscheinlich einen

    [C++ Error] pthread.h(26): E2209 Unable to open include file 'oldstl/pthread.h'
    

    erhalten. Als Workaround könntest du die entsprechende Zeile in der pthread.h auskommentieren. Das unterdrückt den Fehler, allerdings habe ich keine Ahnung, ob und welche anderweitigen Auswirkungen das hat.



  • Das hab ich schon probiert und der Fehler kam auch bei mir.
    Hat jemand schon Erfahrung mit der pthread-library, die es auch für Unix gibt?
    Hier ist die Win-Version zu finden: http://sources.redhat.com/pthreads-win32/
    Würde mich echt interessieren, ob es durch diese Bibliothek einfacher ist, mit Threads zu programmieren.


Anmelden zum Antworten