Я пытаюсь вызвать метод LoadLibrary
, но он возвращает 0. Marshal.GetLastWin32Error
возвращает 126 (указанный модуль не может быть найден.).Почему LoadLibrary не работает с заданным путем?
Код:
[DllImport("kernel32", SetLastError = true, CharSet = CharSet.Ansi)]
static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)]string lpFileName);
string path = @"C:\junk\测试\BlueStacksKK_DeployTool_2.5.48.7209_china_gmgr\ProgramFiles\BstkC.dll";
IntPtr ptr = LoadLibrary(path);
int error = Marshal.GetLastWin32Error();
Но если я переместить этот файл в другое место, как C:\Test\BstkC.dll
, он отлично работает.
Проблема может быть вызвана 测试
в пути. Итак, если у нас есть директив на других языках, кроме английского, как это будет работать.
Просто для информации. File.Exists(path)
возвращает true.
Обратите внимание, что ASCII! = ANSI. –