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 : 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 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.
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Boolean ThreadWrapper::CreateThread() { return (m_pThread->CreateThread()==0 ? false : true); }
Si quelqu'un peut m'éclairer sur ce sujet...
Merci.
Partager