IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

[CallBack/Interop] Pourquoi ai-je une erreur memory violation ?


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Juillet 2004
    Messages
    72
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 72
    Par d�faut [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 : 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

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    premiere question et pas des moindres, si tu utilises le c++/cli, pourquoi utilises-tu la vieille syntaxe du c++ .net 1.x
    c'est fini les __gc et autres *
    place aux handles ^ et autres gcnew

  3. #3
    Membre confirm�
    Inscrit en
    Juillet 2004
    Messages
    72
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 72
    Par d�faut D�sol�
    Alors c'est justement ce que j'ai remarquer lol (ce n'est pas mon code) c'est le code d'une autre personne et je me suis pas plus casser la tete que �a sur le moment j'ai tout repasser en 2.0 et la seule solution que j'ai trouver c'est de donner une fonction call back qui est d�clar�e a l'ext�rieur de ma class form. Mais je ne comprend pas pourkoi....

  4. #4
    Membre confirm� Avatar de deeal
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    218
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 218
    Par d�faut
    juste une question au passage, je n'ai pas travaille avec managed c++, mais je sais que si tu as un type non manage a l'interieur d'une classe managee, ca rend ta classe non-manage, non?
    et la tu declare un class __gc, et a l'interieur tu delcares une class __nogc
    donc je crois que ca peut poser probleme ce genre de declaration et ca rend ta classe (externe) non-managed ou unsafe

  5. #5
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par deeal
    juste une question au passage, je n'ai pas travaille avec managed c++, mais je sais que si tu as un type non manage a l'interieur d'une classe managee, ca rend ta classe non-manage, non?
    On peut avoir dans une classe manag�e un pointeur sur un type manag�.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

Discussions similaires

  1. R�ponses: 5
    Dernier message: 04/01/2008, 09h55
  2. R�ponses: 7
    Dernier message: 29/06/2006, 08h54
  3. [VB.Net] Pourquoi ai-je une erreur à l'exécution d'une requête ?
    Par zooffy dans le forum Acc�s aux donn�es
    R�ponses: 3
    Dernier message: 25/06/2006, 10h35
  4. [C# 2.0] Pourquoi ai-je une erreur � l'ex�cution d'un Filter Databind ?
    Par diaboloche dans le forum Acc�s aux donn�es
    R�ponses: 5
    Dernier message: 24/06/2006, 18h57
  5. [ADO.Net][Access] Pourquoi ai-je une erreur lors de l'Update ?
    Par nazimb dans le forum Acc�s aux donn�es
    R�ponses: 1
    Dernier message: 15/05/2006, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo