DLL mit Multithreading?



  • Hallo,
    Ich wollte eine kleine DLL coden, die sollte einen Thread starten, jedoch hab ich probleme beim compilieren der DLL :

    #include <windows.h>
    #include <process.h>
    
    #ifdef __cplusplus
    #define EXPORT extern "C" __declspec (dllexport)
    #else
    #define EXPORT __declspec (dllexport)
    #endif
    
    typedef struct
    {
     //[...]
     HWND hwnd;
    }CONFIG;
    
    typedef struct
    {
     BOOL Work;
     HWND hwnd;
    }PARAMS;
    
    void Thread (PVOID ptr)
    {
     PARAMS* params = (PARAMS*)ptr;
     while(params->Work)
     {
      MessageBox(params->hwnd, "Test", "Test", 0);
      Sleep(2000);
     }
    
     return;
    }
    
    int WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
    {
     return TRUE;
    }
    
    EXPORT BOOL CALLBACK AutostartPlugin(BOOL startThread)
    {
     PARAMS thread;
     thread.Work = startThread;
     thread.hwnd = config->hwnd;
    
     _beginthread(Thread, 0, &thread);
    
     return TRUE;
    }
    

    es fehlt hier der teil, damit ich den Thread beenden kann, ist mir klar, wills auch erstmal nur compilieren...
    Nur : Wie mache ich das?
    "bcc32 -tWD testdll.cpp" habe ich probiert : "undefined symbol _beginthread [...]" und was anderes als -tWD für DLLs kenne ich nicht.

    Danke



  • moin meister ...

    wer sucht der findet ...

    Schau mal in die Hilfe zu den CLT´s

    Allgemeine Compiler-Ausgabeoptionen:
    Multi-Thread-Anwendung erzeugen (Kommandozeilen-Äquivalent = -tWM)
    Der Compiler erzeugt eine Multi-Thread-Anwendung (EXE-Datei bzw. DLL). (Die Kommandozeilenoption -WM wird nur aus Gründen der Abwärtskompatiblilität unterstützt. Sie leistet dasselbe wie die Option -tWM.)
    Diese Option wird nicht benötigt, wenn Sie eine Modul-Definitionsdatei in Ihr Compilat einbinden und Befehle einbinden, die den Typ der zu erzeugenden 32-Bit-Anwendung festlegen.

    mfg
    RB


Anmelden zum Antworten