такой метод из библиотеки:
CreateObject: function(AName: PWideChar; AConfiguration: PWideChar; AOwner: IOwner): IObject; stdcall;
В С++ библиотеке он объявлен так:
extern "C" __declspec(dllexport) IObject* STDMETHODCALLTYPE CreateObject(wchar_t* AName, wchar_t* AConfiguration, AOwner* IOwner);
В отладчике Visual Studio вижу что значения параметров смещены на один адрес, т.е. в AName пусто, в AConfiguration лежат данные AName, а в AOwner размещены данные AConfiguration. Где я что не так указал, проблема в соглашении вызова? Вроде бы везде stdcall.
cdcal попробуй
Пробовал и cdecl, и это не метод объекта. В общем экспериментальным путём выяснил что влияет подкапотная магия Делфи если функция должна возвращать интерфейс. Переиграл возврат результата, через поинтер , главное на стороне C++ библиотеки правильно вернуть ссылку, по-сути, на реализацию абстрактного класса
Постоянно использую возврат интерфейса через экспортируемую функцию. Проблем не наблюдал
Обсуждают сегодня