La valeur de l'ESP n'a pas été correctement enregistrées à travers un appel de fonction

Je suis en train de travailler sur un projet Visual studio
Projet (qui génère une lib statique à la compilation)

a une classe

using namespace mynamespace;
class projectAclass
{
  virtual int  funct1()=0;  //Pure virtual function
  virtual int funct2()=0;  //Pure virtual function
  virtual int funct3()=0;  //Pure virtual function
};

Projet B(qui génère une DLL à la compilation)

#define projectBclass_DLL __declspec( dllexport )
class projectBclass_DLL projectBclass: public mynamespace::projectAclass
{
  //Definitions of the 3 pure virtual functions are here
  int funct1() 
  {
    //definition go here
  }
  //similarly for funct2 and funct3

  int funct4()
 { //Definition goes here    }
  int funct5()
 { //Definition goes here    }
  int funct6()
 { //Definition goes here    }
};

Maintenant à partir de la fonction principale créée dans un autre projet, j'ai créé un objet de la classe projectAclass et en essayant d'appeler la fonction funct1 mais je ne sais pas une autre fonction est appelé, qui sont définies dans projectBclass (disons funct4) quand je suis en train de déboguer la solution et après le retour de funct4 j'obtiens cette erreur

Run-Time Check Failure #0 - The value of ESP was not properly saved across a
function call.  This is usually a result of calling a function declared with
one calling convention with a function pointer declared with a different calling
convention.

Merci d'avance

  • Je suppose que vous ne l'avez pas fait "créé un objet de la classe projectAclass" parce qu'elle est abstraite.
  • Le débogueur d'avertissement est juste un effet secondaire de la mauvaise fonction appelé. Il est tout à fait difficile de comprendre pourquoi ce qui se passe, mais bien sûr, vous pouvez ne jamais appeler funct4() sur un projectAclass objet, il ne dispose pas de cette fonction et est abstraite peut donc jamais être créé, donc l'info à cette question ne peut pas être précis.
  • Monsieur pouvez-vous me dire comment résoudre cette exception(ESP n'était pas correctement....)
  • Le declspec d'exportation de la classe de base trop?
  • Nope
InformationsquelleAutor Euler | 2013-07-03