Dll c++ natif dans appli .Net - Perte de pointeur
Bonjour,
J'ai une dll en c++ natif/mfc, que je souhaite utiliser dans une application .Net (en c#).
J'ai donc essayé de réaliser un wrapper en C++/CLI pour les classes de la dll (ici un thread) que je souhaite utiliser, suivant le tutoriel de nico-pyright.
Ma classe ThreadWrapper contient comme attribut un pointeur vers ma classe native, CThread, qui elle-même dérive de CWinThread.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public ref class ThreadWrapper
{
public:
ThreadWrapper();
~ThreadWrapper();
// Members
protected:
CThread* m_pThread;
// Service
public:
CThread* GetThread() { return m_pThread; }
Boolean CreateThread();
void StopThread();
ThreadWrapper^ operator=(ThreadWrapper^ src) ;
}; |
A la compilation, tout semble fonctionner, mais à l'exécution, lors du retour de la méthode CreateThread(), le pointeur m_pThread est corrompu et du coup mon programme plante.
Code:
1 2 3 4 5
|
Boolean ThreadWrapper::CreateThread()
{
return (m_pThread->CreateThread()==0 ? false : true);
} |
Je pense que c'est un problème d'espace mémoire managé/non managé, mais je n'arrive pas à comprendre le mécanisme exact.
Si quelqu'un peut m'éclairer sur ce sujet...
Merci.;)