У меня есть абстрактный класс в программе на C ++, который выглядит как
class Interface {
virtual void blah() = 0;
virtual int asdf() = 0;
};
, и эта программа на C ++ позволяет загружать библиотеки DLL с помощью LoadLibrary.Когда вы загружаете DLL, она вызывает функцию в DLL, которая называется Setup с GetProcAddress, передавая указатель на подкласс Interface в качестве параметра.
У меня есть DLL-библиотека Delphi, имитирующая этот класс, и открывающая функцию установки следующим образом:
type
Interface = class abstract
procedure blah(); virtual; abstract;
function asdf() : Integer; virtual; abstract;
end;
function Setup(I : Interface) : Integer; export; cdecl;
begin
Result := 0;
end
exports Setup;
Но когда программа вызывает функцию, она падает.Если я изменю функцию Setup на эту:
function Setup(I : Pointer) : Integer; export; cdecl;
Она работает нормально и не вылетает, но, конечно, я не могу просто так ее оставить, мне нужно иметь возможность использовать класс.Может кто-нибудь сказать мне, что я делаю не так?