[CallBack/Interop] Pourquoi ai-je une erreur memory violation ?
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:
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:
1 2
|
ManageCallBack * testCallBack; |
Dans ma fonction button_click le code suivant
Code:
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:
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