Bonjour j'ai un problème assez génant en C++/Cli. J'utilise une Dll non managée et lorsque la fonction est appelée une fois elle plante a la fin de l'execution je ne comprend pas. regarder dans mon code a /* Erreur Ici memory violation*/

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
38
39
40
41
42
43
44
45
46
47
48
 
    __gc class ManageCallBack
    {
    private:
        __nogc class CallBack
        {
        private :
            static  void CALLBACK UnmanagedGetCommand(short id)
            {                
                ManageCallBack* pew = ManageCallBack::GetClass();
                pew->CallBackDelegate->Invoke(id);
                                /* Erreur Ici memory violation*/
                               //plantage de la function le invoke marche
            }    
 
        public : 
            void StartInitCallBack()
            {
                char Hostname_Radar [8] = {"RADAR"}; 
                short init_imo_func = NavnetInitImoFunc
(Hostname_Radar,&CallBack::UnmanagedGetCommand );
            }
        };
    private:
        static ManageCallBack * m_pClass = NULL;
        CallBack * m_nogcCallBack;
    public :
        __delegate void Callback_Function_GetCommand(short id);
        Callback_Function_GetCommand * CallBackDelegate;
 
        ManageCallBack()
        {
            m_pClass = this;
            m_nogcCallBack = new CallBack();
        }
        ~ManageCallBack()
        {
            delete m_nogcCallBack;
        }
        static ManageCallBack* GetClass()
        {    
            return m_pClass;        
        }
        void StartInitCallBack()
        {
            m_nogcCallBack->StartInitCallBack();
        }
    };
Dans ma form j'ai déclarer un objet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ManageCallBack * testCallBack;
Dans ma fonction button_click le code suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
testCallBack = new ManageCallBack();
testCallBack->CallBackDelegate = new ManageCallBack::Callback_Function_GetCommand
(this,&Form1::GetCommand);
testCallBack->StartInitCallBack();
Ma function get commande fait ça (mais elle s'execute bien ça marche )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
void GetCommand(short id)
{
    MessageBox::Show("On est dans GetCommand", "Alarm",
 MessageBoxButtons::OK,MessageBoxIcon::Exclamation);
}
Je ne comprend pas ce qui pose problème

--------------------------------
Navarro Anaël genki