Функция loadlibrary () из kernel32.dll не может загрузить файлы 64-битной сборки

Я использую функцию LoadLibrary из kernel32.dll для загрузки некоторых 64-битных файлов сборки с полным путем к файлу на C#. Но он возвращает нулевой указатель. А также возвращает 0 для функции getLastError (). Ниже приведен код определения функции на C#.

[DllImport("kernel32.dll"), SuppressUnmanagedCodeSecurity]
static extern uint LoadLibraryEx(string fileName, uint notUsedMustBeZero, uint flags);

Ниже приведен код, который я пытался загрузить 64-битной сборкой.

var hLib = LoadLibraryEx(filePath, 0, DONT_RESOLVE_DLL_REFERENCES | LOAD_IGNORE_CODE_AUTHZ_LEVEL);

Как исправить эту проблему?

Почему вы хотите использовать LoadLibrary и сборка, под которым, я полагаю, вы имеете в виду сборку .NET? А с какой разрядностью скомпилировано ваше приложение? Также используйте SetLastError=true, чтобы иметь возможность звонить в GetLastError().

CodeCaster 31.10.2018 12:34

Сборка - это не только сборка .Net. Это означает все управляемые и неуправляемые файлы сборки. Я не установил SetLastError = true. Я попробую и с этим.

Cosmics 01.11.2018 12:14

Я не знаю разрядности приложения, которое скомпилировано с.

Cosmics 01.11.2018 12:15

Нет, в контексте DLL «сборка» означает "Сборка .NET". неуправляемая PE DLL не называется "сборкой".

CodeCaster 01.11.2018 12:17
0
4
510
0

Другие вопросы по теме