Error bei Thread in VC++ .net
-
Habe einen Thread erstellt:
UINT Thread::thrFunction(LPVOID pParam) { int* pFlag = (int*) pParam; while (*pFlag) { Sleep(1); m_iZeitMS+=1; } return 0; }
Beim Linken bekomme ich nun folgenden Error:
Thread-Test error LNK2001: Nichtaufgeloestes externes Symbol "public: static int Thread::m_iZeitMS" (?m_iZeitMS@Thread@@2HA)Weiß jemand woran das liegt???
-
Deine Funktion ist static, gehört also NICHT zum Thread-Objekt selber!! D.h. sie kann nur static-Elemente innerhalb einer Klasse verarbeiten.
Lösungsvorschlag:
Als Übergabeparameter ein Zeiger auf das Thread-Objekt!UINT Thread::thrFunction(LPVOID pParam) { Thread* pThread = (Thread*)pParam; while( pThread->m_Flag) { Sleep(1); pThread->m_iZeitMS+=1; } return 0; }
-
Es kommt immer noch der selbe Fehler
!!
Du kannst mein Projekt mal hier ansehen.
-
Statische Variablen musst du noch definieren. Schreib mal folgendes in die Thread.cpp:
int Thread::m_iZeitMS;
-
Danke das wars
.
-
Kompielen und linken funktioniert problemlos jedoch bekomme ich immer eine Zeit von 0.00 als ergebniss.
Weiß jemand warum????
-
Du solltest m_thread nicht lokal anlegen, das sind dann zwei völlig unterschiedlich Objekte. Außerdem stimmt der Parameter deiner Threadfunktion nicht mit dem überein, was du übergibst.
-
Jetzt funktioniert es.
Die Zeitangabe ist allerdings SEHR ungenau.