C++ 函数调用中未正确保存ESP的值
我正在从事一个VisualStudio项目 在编译时生成静态库的项目C++ 函数调用中未正确保存ESP的值,c++,visual-studio-2010,visual-c++,runtime-error,projects-and-solutions,C++,Visual Studio 2010,Visual C++,Runtime Error,Projects And Solutions,我正在从事一个VisualStudio项目 在编译时生成静态库的项目 #define projectBclass_DLL __declspec( dllexport ) class projectBclass_DLL projectBclass: public mynamespace::projectAclass { //Definitions of the 3 pure virtual functions are here int funct1() { //definit
#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 }
};
他有一门课
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
};
编译时生成DLL的项目B
#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函数,但我不知道会调用ProjectB类中定义的其他函数,比如说funct4,当我尝试调试解决方案时,从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.
提前谢谢有时候你会弄错。有时,重建所有东西都会对它进行排序。有时,你的答案是错误的。有时,对所有内容的重建将对其进行排序。< P>确保链接到DLL的静态库、DLL和创建C++ DLL的应用程序具有相同的构建配置调试/发布。
检查项目中的预处理器标志。错误的预处理器标志可能导致不同的虚拟函数指针表,因此很容易发生调用错误函数的情况 > P>确保与DLL链接的静态库、DLL和创建C++ DLL的应用程序具有相同的构建配置调试/发布。
检查项目中的预处理器标志。错误的预处理器标志可能导致不同的虚拟函数指针表,因此很容易发生调用错误函数的情况 我假定您实际上没有创建projectAclass类的对象,因为它是抽象的。调试器警告只是调用错误函数的副作用。我们完全不清楚为什么会发生这种情况,但当然,您永远不能在projectAclass对象上调用funct4,它没有此函数,而且是抽象的,因此永远无法创建,所以这个问题中的信息不可能是准确的。@HansPassant先生,你能告诉我如何修复这个异常吗sp没有正确地…declspec也导出基类吗?我猜你实际上没有创建projectAclass类的对象,因为它是抽象的。调试器警告只是错误函数获取的副作用打电话。我们完全不清楚为什么会发生这种情况,但当然,您永远不能在projectAclass对象上调用funct4,它没有此函数,而且是抽象的,因此永远无法创建,所以这个问题中的信息不可能是准确的。@HansPassant先生,你能告诉我如何修复这个异常吗sp没有正确地…declspec是否也导出了基类?我已经检查了所有具有相同的生成配置,但它仍然给出了该异常。我已经检查了所有具有相同的生成配置,但它仍然给出了该异常例外