Страницы

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

вторник, 16 июля 2019 г.

Вызов функции из DLL

Импортирую библиотеку в C# и получаю:
unable to find entrypoint.
Что делаю не так?
Список функций библиотеки:

Код импорта:
[DllImport("xxx.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern int ReadDomainPassword(string user, string domain, StringBuilder password);


Ответ

При импорте следует использовать имя функции созданное компилятором:
[DllImport("xxx.dll", EntryPoint="?ReadDomainPassword@@YAHPAD00@Z", CallingConvention=CallingConvention.Cdecl)]
Как я понял это наиболее простой вариант. P.S.: посмотреть имя функции C++ можно через DLL Export Viewer или Dependency Walker, только чтобы не оказаться в такой же ситуации как и я - снимайте галку Undecorate C++ functions в DLL Export Viewer, иначе будете видеть "правильное" имя по которому получите EntryPointNotFoundException

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

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