none
First chance exception at 0×0085E605 RRS feed

  • Question

  • Bonjour,

    J’espère que vous êtes bien.

    Bon, j’ai ajouté une modification dans le code source d'une application VC++ sur l'IDE VS2013, mais j’ai eu une drôle erreur. Je ne sais pas si elle est liée à l’environnement de Dév ou à quoi exactement.

    je dispose d'une classe mère nommée  OutputDev cette classe dispose de plusieurs classes filles dont vpfOutputDev.

    J'ai l'intention d'ajouter une méthode virtuelle dans la classe OutputDev et de la redéfinir dans la classe fille vpfOutputDev.

    Voilà ce que j’ai fait :

    Dans la classe  OutputDev, J'ai ajouté la méthode virtuelle "addPieceInfoPages" comme suit :
    (OutputDev.h)

    virtual int addPieceInfoPages(){ return 0; }

     

    Puis, dans sa classe fille vpfOutputDev  j’ai ajouté la déclaration de la méthode virtuelle comme suit :
    (vpfOutputDev.h)

    virtual int addPieceInfoPages();

     

    Enfin, j’ai ajouté la définition de la fonction dans le fichier vpfOutputDev.cc comme suit :
    (vpfOutputDev.cc)

    int vpfOutputDev::addPieceInfoPages()

    {

           return 0;

    }

    Je ne fais pas encore appel à la méthode addPieceInfoPages dans mon code, et quand je régénère le projet et j’exécute je reçois l'erreur: Run-Time Failure #0 - The value of ESP was not properly saved adroqq a function call....

    En googlant, le problème est lié à l’utilisation de différents calling conventions (sincèrement ça ne me dit pas grand-chose).

    Dans un forum, on propose d’aller dans les propriétés du projet -> C/C++ -> Code generation et de affecter à l’option Basic runtime checks la valeur Default.

    En faisant ça, la C++ Runtime Check failure #0 error disparait, mais je reçois une autre :

    First-chance exception at 0×0085E605 in techtech.exe: 0×C0000005: Access violation reading location 0×00000018....

    Je note que certains de mes collègues, qui utilisent au lieu de visual studio la commande gmake et les makefiles pour faire la compilation, n'ont pas ces erreurs lors de l'exécution.

    Merci de me donner un coup de main 

    lundi 15 février 2016 09:29

Réponses

  • Bonjour,

    Bon, oui Paul le problème est peut être dû à l'utilisation de librairies générées avec des options non compatibles avec les options actuelles. mon projet n'est pas créé depuis le début avec visual studio, je n'ai commencé à l'utiliser que récemment.

    Alors, voilà ce que j'ai fait, j'ai compilé le projet avec l'outil make et puis ça marche nickel.

    Merci.  


    • Marqué comme réponse ZINEBHAIDA mardi 16 février 2016 10:39
    • Modifié ZINEBHAIDA mercredi 17 février 2016 08:42
    mardi 16 février 2016 10:39

Toutes les réponses

  • Pensez à utiliser le mot-clé "override" lors de la redéfinition de la méthode virtuelle (si c'est disponible sur votre VS2013 vieillissant).

    http://en.cppreference.com/w/cpp/language/override

    Un ".cc", je vérifierai deux fois qu'une que le l'IDE ne compile pas en C mais en C++.

    >Dans un forum, on propose d’aller dans les propriétés du projet -> C/C++...

    Super, en gros, on vous dit de casser le thermomètre pour ne plus être malade.

    C'est des charlatans.

    Ce que je vois de plus probable, c'est l'utilisation d'une librairie générée avec des options non compatibles avec vos options actuelles.

    Pouvez-vous mettre la définition de la méthode dans la classe mère dans le .cpp et pas en inline dans le .h (histoire d’éliminer des scénarios à la con.) ?

    Utilisez le débogueur pour bien voir où ça part en sucette.

    On pourra voir plus précisément le problème.


    Paul Bacelar, Ex - MVP VC++

    lundi 15 février 2016 17:09
    Modérateur
  • Bonjour,

    Bon, oui Paul le problème est peut être dû à l'utilisation de librairies générées avec des options non compatibles avec les options actuelles. mon projet n'est pas créé depuis le début avec visual studio, je n'ai commencé à l'utiliser que récemment.

    Alors, voilà ce que j'ai fait, j'ai compilé le projet avec l'outil make et puis ça marche nickel.

    Merci.  


    • Marqué comme réponse ZINEBHAIDA mardi 16 février 2016 10:39
    • Modifié ZINEBHAIDA mercredi 17 février 2016 08:42
    mardi 16 février 2016 10:39