调用约定错误!! (ESP的值未在函数调用中正确保存)

时间:2013-07-05 05:26:46

标签: c++ visual-studio-2010 dll calling-convention

我是新手用c ++创建DLL库这里是我的代码

//header.h
class A
{
  virtual int  funct()=0;  //Pure virtual function 
};

项目B(在编译时生成DLL)

#include "header.h"
#define B_DLL __declspec( dllexport )
class B_DLL B: public A
{
  //Definitions of the 3 pure virtual functions are here
  int funct() 
  {
    //definition go here
  }

};

现在我创建一个A类实例并调用 funct()然后我收到错误

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.

如何使用调用约定 _cdecl _stdcall 解决此问题。我搜索了很多但是无法确切地找到如何解决此错误请帮助我解决这个问题

先谢谢

1 个答案:

答案 0 :(得分:0)

A是一个纯粹的抽象类(接口),你不能初始化一个抽象类,也不能直接使用它的方法。您应该初始化其派生B_DLL