【发布时间】:2013-07-03 10:53:41
【问题描述】:
我正在开发一个 Visual Studio 项目 项目 A(在编译时生成静态库)
有一个类
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
};
项目 B(编译时生成 DLL)
#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 }
};
现在从在其他项目中创建的主函数中,我创建了类 projectAclass 的对象并尝试调用函数 funct1 但我不知道其他一些函数当我尝试调试解决方案并从 funct4 返回后,我收到此错误
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.
提前致谢
【问题讨论】:
-
我认为您实际上并没有“创建类 projectAclass 的对象”,因为它是抽象的。
-
调试器警告只是调用错误函数的副作用。完全不清楚为什么会发生这种情况,但当然你不能在 projectAclass 对象上调用 funct4(),它没有这个函数并且是抽象的,所以永远不能创建,所以这个问题中的信息不准确。跨度>
-
@HansPassant 先生,你能告诉我如何解决这个异常吗(ESP 不正确....)
-
declspec 是否也导出基类?
标签: c++ visual-studio-2010 visual-c++ runtime-error projects-and-solutions