Мы используем Delphi 10.3.2. с поддержкой OSX64. Мы разрабатываем проект для OSX64, который использует скомпилированный GCC dylib. Библиотеки Dylib в OSX64 по умолчанию не являются stdcall или cdecl, поэтому мы должны удалить во всех функциях эти директивы. У нас есть проблема с QueryInterface, которую мы должны изменить с stdcall на ничто.
Мы попытались создать наш собственный класс MyIINterface и TMYInterfacedObject, но он не может скомпилироваться, так как возвращает ошибку
E2211 Объявление 'QueryInterface »отличается от объявления в интерфейсе« MyIInterface »mycom.pas (10): Связанный член: функция QueryInterface (const TGUID; out): HRESULT;
Как это возможно? Также, если мы переименуем QueryInterface в QuereyInterface2 в MyIINterface, ему все равно потребуется QueryInterface.
type
MyIInterface = interface
['{00000000-0000-0000-C000-000000000046}']
function QueryInterface(const IID: TGUID; out Obj): HResult;
function _AddRef: Integer;
function _Release: Integer;
end;
MyIUnknown = IInterface;
TMyInterfacedObject = class(TObject, MyIInterface)
protected
function QueryInterface(const IID: TGUID; out Obj): HResult;