Страницы

Поиск по вопросам

пятница, 21 июня 2019 г.

Совместимы ли методы из библиотеки Delphi с P/Invoke?

Совместимы ли методы из библиотеки, написанной на 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';

Комментариев нет:

Отправить комментарий