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 :
Voici l'interface de mon objet manag� :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 void addCallback(void* object, void (*returnValueCallback)(void*, int));
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 #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; };
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
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; }
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 ?
Partager