Bonjour,
Mon problème semble à première vue s'apparenter à celui décrit ici. La différence majeure est que AfxBeginThread() est appelée dans une classe managée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 __gc class ServiceThread { protected: CWinThread *m_pThread; static UINT ThreadFunc(LPVOID pvParam); public: bool runService(); }; bool ServiceThread::runService() { m_pThread = AfxBeginThread( (AFX_THREADPROC)ThreadFunc, this); if(!m_pThread) { // Impossible de créer le thread ! return false; } return true; }
J'obtiens l'erreur suivante à la compilation :
Il y a donc un problème de conversion de ma classe managée vers le type LPVOID que je n'arrive pas à résoudre.ServiceThread.cpp(35) : error C2665: 'AfxBeginThread' : aucune des surcharges 2 ne peut convertir le paramètre 2 à partir du type 'ServiceThread __gc *const '
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(4105): peut être 'CWinThread *AfxBeginThread(AFX_THREADPROC,LPVOID,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(4108): ou 'CWinThread *AfxBeginThread(CRuntimeClass *,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)'
lors de la tentative de mise en correspondance de la liste des arguments '(AFX_THREADPROC, ServiceThread __gc *const )'
Si vous avez une solution, elle sera la bienvenue!
Partager