Совместимы ли методы из библиотеки, написанной на Delphi с P/Invoke?
И если нет - есть ли какая либо возможность сделать их совместимыми?
Есть доступ к исходникам .dll.
Ответ
Для начала - стоит посмотреть в исходниках, с каким соглашением о вызовах функции из библиотеки экспортируются.
Если там stdcall или cdecl - то такая функция без проблем может быть вызвана через P/Invoke. Если же там соглашение не указано - то так просто не получится.
В таком случае, если исходники библиотеки менять нельзя - самым простым решением будет прослойка из еще одной библиотеки на Delphi:
procedure Foo(...); external 'MyLib.dll';
// ...
procedure Foo_Std(...); stdcall;
begin
Foo(...);
end;
// ...
exports
Foo_Std name 'Foo';
Комментариев нет:
Отправить комментарий