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.

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);
	}
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.