Bonjour � tous,

Pb assez sp�cifique d'o� l'intitul� qui fait 20bornes

Je d�veloppe un projet Windows Form en c++ manag� qui n�cessite l'utilisation d'une dll native.

Celle-�i contient une m�thode du type :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
 
void addCallback(void* object, void (*returnValueCallback)(void*, int));
Voici l'interface de mon objet manag� :

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
 
#pragma once
 
#include "cli_ptr.h"
 
using namespace System;
using namespace System::Windows::Forms;
 
public ref class MonObjet
{
public:
	MonObjet(String^ name, String^ ip, int port);
	~MonObjet();
 
	String^ m_name;
	String^ m_ip;
	int m_port;
 
};
et l'impl�mentation :

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
#include "stdafx.h"
#include "MonObjet.h"
 
void callback_portMonObjetValueChanged(void* baton, int port);
 
MonObjet::MonObjet(String^ name, String^ ip, int port)
{
	m_name = name;
	m_ip = ip;
	m_port = port;
 
	shared_ptr<cli_ptr<MonObjet>> ptr = cli_ptr<MonObjet>::Create(this);
	void* objetVoid = ptr->GetNative();
 
	maDll->addCallback(objetVoid , &callback_portMonObjetValueChanged);
 
}
 
MonObjet::~MonObjet()
{
 
}
 
///////////////////////////////////////////////////////////
//Callbacks
///////////////////////////////////////////////////////////
 
void callback_portMonObjetValueChanged(void* objet, int port)
{
	// get the managed object
	shared_ptr<cli_ptr<MonObjet>> ptr2 =  cli_ptr<MonObjet>::Create(objet);
	MonObjet^ monObjet= ptr2->GetManaged<MonObjet>();
 
	// update the MonObjet port attribute
	monObjet->m_port = port;
}
Pour convertir mon O.M. en void* (qui sera en fait le premier arg du callback appel� par ma dll) et vice-versa j'utilise la merveilleuse classe "cli_ptr" que j'ai trouv� sur le blog de Paslatek http://www.paslatek.net/shared_ptr-o...090909-23.aspx

Mon pb : impossible de r�cup la bonne instance de MonObjet dans le callback
Je r�cup�re bien un Objet du type MonObjet mais impossible d'acc�der � ses membres, monObjet est nullptr !

Je pr�cise que la classe "cli_ptr" fonctionne si je l'utilise simplement, sans passer par la dll native.

Ce que je veux faire est il possible ?
Si oui j'ai du faire une bourde qlq part...
Qlq'un a-t-il une id�e svp ?