Fehlermeldung: '_beginthreadex' undefined



  • Hallo Leute,

    Ich moechte eine Funktion in einem Thread starten, habe auch laut MSDN die process.h eingebunden und bekomme trotzdem diese Meldung:

    "'_beginthreadex' undefined; assuming extern returning int"

    der Aufruf ist folgender:

    _beginthreadex(NULL, 0, &meinefunktion, &threadparam, 0, &ThreadID);
    

    threadparam ist ein struct mit 4 parametern.

    Was kann man denn da machen?

    Ach und noch ne Frage, wie kann ich denn einen Rueckgabewert der Funktion realisieren? Einfach mit return wird das ja sicher nichts. Aber vielleicht kann ich in das struct noch eine variable reinnehmen, die ich dann schreibe?

    Ich benutze das Visual Studio 6 und das sind meine ersten Gehversuche mit Threads.

    Danke schonmal,

    der Guenther.



  • Hast du auch eine von den beiden Libraries eingebunden? LibCmt.lib oder MsVCrt.lib



  • ja.

    #pragma comment(lib, "LibCmt.lib")
    


  • projekt auf multithreading gestellt 😃

    Maffe001 schrieb:

    Hast du auch eine von den beiden Libraries eingebunden? LibCmt.lib oder MsVCrt.lib

    die werden doch standardmässig von vc mitgelinkt oder nicht



  • miller_m schrieb:

    projekt auf multithreading gestellt 😃

    Oehm, noe. Wie mach ich das? Bin schonmal die Project-Settings durchgegangen, hab aber nichts entsprechendes gefunden.

    der Guenther



  • Irgendwie ist das hier alles zum Heulen.

    Mal abgesehen davon, dass oben besagter Fehler kommt, habe ich hier noch ganz andere Probleme.

    Da versuche ich Wochenlang ein Programm schon hierarchisch aufzubauen und das alles so durchschaubar wie moeglich zu machen und nur wegen ner bloeden Progressbar zermerbel ich mir die ganze struktur.

    Wie gesagt friert meine Dialogbox beim Lesen von der seriellen Schnittstelle ein bis die Daten komplett geholt sind. Eigentlich sollte da ne Progressbar hochzaehlen, aber wenn das Fenster nicht aktualisiert wird, wird's halt nix.

    Nun kam der tolle Vorschlag, die Lesen-Funktion in einem eigenen Thread zu starten. Aber: dann brauche ich einen struct, um meine 4 parameter zu uebergeben und meinen Rueckgabewert kann ich auch nicht verwenden. Dieser Struct muss auch noch global sein, weil der Aufrufer und der Aufgerufene in verschiedenen Files liegen. Und schon ist meine schoene Struktur dahin.

    Jungejunge und das alles nur, um eine einfache Funktion wie ProcessSystemEvents() (bei Labwindows CVI dabei) zu ersetzen???

    Was habe ich mir da nur eingebrockt?

    der Guenther



  • Guenther schrieb:

    miller_m schrieb:

    projekt auf multithreading gestellt 😃

    Oehm, noe. Wie mach ich das? Bin schonmal die Project-Settings durchgegangen, hab aber nichts entsprechendes gefunden.
    der Guenther

    habe keinen vc mehr müsste aber afaik unter code generation stehen.

    Guenther schrieb:

    Was habe ich mir da nur eingebrockt?

    ein rat von mir. du solltest dein programm mal nen tag ruhen lassen und dich hinsetzen und das "problem" auf einem blatt papier lösen, ich denke somit
    kommst du auch imo von den designfehlern (globale vars, ..) weg.



  • Guenther schrieb:

    Irgendwie ist das hier alles zum Heulen.

    Mal abgesehen davon, dass oben besagter Fehler kommt, habe ich hier noch ganz andere Probleme.

    Da versuche ich Wochenlang ein Programm schon hierarchisch aufzubauen und das alles so durchschaubar wie moeglich zu machen und nur wegen ner bloeden Progressbar zermerbel ich mir die ganze struktur.

    Wie gesagt friert meine Dialogbox beim Lesen von der seriellen Schnittstelle ein bis die Daten komplett geholt sind. Eigentlich sollte da ne Progressbar hochzaehlen, aber wenn das Fenster nicht aktualisiert wird, wird's halt nix.

    Nun kam der tolle Vorschlag, die Lesen-Funktion in einem eigenen Thread zu starten. Aber: dann brauche ich einen struct, um meine 4 parameter zu uebergeben und meinen Rueckgabewert kann ich auch nicht verwenden. Dieser Struct muss auch noch global sein, weil der Aufrufer und der Aufgerufene in verschiedenen Files liegen. Und schon ist meine schoene Struktur dahin.

    Jungejunge und das alles nur, um eine einfache Funktion wie ProcessSystemEvents() (bei Labwindows CVI dabei) zu ersetzen???

    Was habe ich mir da nur eingebrockt?

    der Guenther

    Du solltest wirklich nochmal Dein Programmdesign und den oben geschriebenen Blödsinn überdenken... 😮

    Globale Variablen und Threads: Da läufst Du noch in ganz andere Probleme (Stichwort: Threadsynchronisation)...



  • MultiThreader schrieb:

    Du solltest wirklich nochmal Dein Programmdesign und den oben geschriebenen Blödsinn überdenken...

    Globale Variablen und Threads: Da läufst Du noch in ganz andere Probleme (Stichwort: Threadsynchronisation)...

    Ich benutze keine globalen Variablen und will es auch nicht. Hast du gelesen, was ich schrieb?

    danke fuer deine Hilfe.

    der Guenther



  • Guenther schrieb:

    Ich benutze keine globalen Variablen und will es auch nicht. Hast du gelesen, was ich schrieb?

    ich denk er wird das selbe gelesen haben wie ich 😮 😕 🙄

    Guenther schrieb:

    Dieser Struct muss auch noch global sein



  • Habe ich nicht gesagt, dass das Mist ist?

    Mit Global meinte ich ein globales typedef. Mann jetzt seid noch pingelig. Tut mir ja leid.

    der Guenther.



  • Guenther schrieb:

    Habe ich nicht gesagt, dass das Mist ist?
    Mit Global meinte ich ein globales typedef. Mann jetzt seid noch pingelig. Tut mir ja leid.
    der Guenther.

    hat nix mit "pingelig" tun, wir sollten doch alle über das gleiche reden.
    multithreader und ich gingen von einer globalen instanz aus während du von einer
    definition sprichst.



  • @Guenther:

    Was spricht gegen ein globales typedef? Versteh ich nicht. Andere Sachen wie includes oder Macros sind doch auch global. 😕
    (Naja, kann man irgendwie nicht vergleichen. Aber was anderes fällt mir jetzt nicht ein.)


Anmelden zum Antworten