WinAPI Threads in Borland



  • ich versuch grad einen WinAPI Thread in Borland zuerzeugen, das Beispiel lautet

    HANDLE MyThread = CreateThread(NULL, 0, MyThreadFuction, NULL, NULL, &ID);
    DWORD WINAPI MyClass::MyThreadFuction(LPVOID Unused){
       doSth();
    }
    

    leider meckert er mir was vor von wegen

    [C++ Fehler] WinThreads.cpp(24): E2034 Konvertierung von 'unsigned long (__stdcall * (_closure )(void *))(void *)' nach 'unsigned long (__stdcall *)(void *)' nicht möglich
    [C++ Fehler] WinThreads.cpp(24): E2342 Keine Übereinstimmung des Typs beim Parameter 'lpStartAddress' ('unsigned long (__stdcall *)(void *)' erwartet, 'void' erhalten)
    [C++ Fehler] WinThreads.cpp(24): E2034 Konvertierung von 'long *' nach 'unsigned long *' nicht möglich
    [C++ Fehler] WinThreads.cpp(24): E2342 Keine Übereinstimmung des Typs beim Parameter 'lpThreadId' ('unsigned long *' erwartet, 'long *' erhalten)
    

    ich hab diverse casts und veränderungen an der deklaration mit sehr wenig erfolg durchgeführt, irgendwie blick ich das nicht so recht

    ich habs auch mit
    LPTHREAD_START_ROUTINE
    und
    SEC_THREAD_START
    versucht



  • Hallo

    Da die WinAPI eine C-Schnittstelle ist und C keine Klassen kennt muß Thread-Funktion eine statische Funktion sein, keine Membermethode einer Klasse. Die Instanz von MyClass kannst du einem anderem Parameter als Data übergeben, das bekommst du dann in der Thread-Funktion als Parameter den du jetzt als unused benannt hast.
    Oder benutzt gleich TThread, da ist das Problem schon gelöst.

    bis bald
    akari



  • TThread darf ich nicht verwenden (wegen eventueller compilerumstellung usw.)
    danke für die hilfe ich werds mal testen

    Thx for Help klappt danke _


Anmelden zum Antworten