Thread



  • Es geht darum:

    http://www.c-plusplus.net/forum/viewtopic.php?t=39041&highlight=thread

    Ich habe die Anleitung genau Umgesetzt, bekomme aber 2 Fehler.

    DeinThread.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual int __thiscall CDeinThread::Run(void)" (?Run@CDeinThread@@UAEHXZ)
    Debug/Beckhoff.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    Beckhoff.exe - 2 Fehler, 0 Warnung(en)

    Zudem würde ich gern wissen welche Funktion der Thread startet. Run() ?

    Will zunächst nur das ausführen!

    Sleep(2000);

    AfxMessageBox("CAbfrage::Watch() nicht beendet");



  • Hi

    DeinThread.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual int __thiscall CDeinThread::Run(void)" (?Run@CDeinThread@@UAEHXZ)
    Debug/Beckhoff.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    Beckhoff.exe - 2 Fehler, 0 Warnung(en)

    Du musst die Funktion CDeinThread::Run natürlich auch definieren:
    in der cpp datei:

    int CDeinThread::Run()
    {
     // tu etwas
     return 1;
    }
    

    Um den Thread jetzt aufzurufen musst du erst einmal eine Instance deiner Klasse erstellen (bzw. das mach AfxBeginThread):
    Mach ne neue Membervariable in z.B. der Dialogklasse:

    CDeinThread* m_xDisplayThread;
    

    Den Thread startest du dann so:

    m_xDisplayThread = (CDeinThread*) 
    AfxBeginThread(RUNTIME_CLASS(CDeinThread), NULL, 
        0, CREATE_SUSPENDED); 
    
    m_xDisplayThread->SetOwner(this); 
    m_xDisplayThread->ResumeThread();
    

    Der Code in run wird dann in dem Thread ausgeführt.

    Grüße Rapha



  • Wenn ich dir jetzt sage wo mein Fehler war, lachst du mich aus.

    Meine Run():

    int Run()
    {
    while (TRUE){
    Sleep(1000);
    AfxMessageBox("Hallo!!!");
    };

    return 1;
    }

    Das geht natürlich nicht.
    Ich glaub ich sollte mal Pause machen 😉


Anmelden zum Antworten