Соглашение о вызовах Ошибка !! (Значение ESP не было должным образом сохранено при вызове функции)

Я новичок в создании библиотек DLL в C ++, вот мой код

//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 и вызываю функц () тогда я получаю ошибку

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

Решение

A является чисто абстрактным классом (интерфейсом), вы не можете инициализировать абстрактный класс или использовать его методы напрямую. Вы должны инициализировать его производнуюB_DLL вместо.

0

Другие решения

Других решений пока нет …