У меня есть кусок кода, который загружает родную dll, она загружает dll, используя LoadLibrary из kernel32, используя DllImport
public static IntPtr Load(string fileName)
{
IntPtr num = LoadLibrary(fileName);
if (num == IntPtr.Zero)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
return num;
}
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern IntPtr LoadLibrary(string dllFilePath);
Этот кусок кода работает на .NET Framework 4.0, но на 4.5+ он выбрасываетв большинстве случаев System.ComponentModel.Win32Exception: '%1 is not a valid Win32 application'
это не согласовано, иногда в сообщении об ошибке говорится, что операция прошла успешно.
этот код не завершается ошибкой в .NET Framework 4.0 и возвращает указатель.
Сначала я подумал, что это проблема окружающей среды, но тестировал на разных проблемах.Не имеет опыта работы с PInvoke и не может найти это при переполнении стека.Может кто-нибудь привести меня к некоторым указателям.
Не имеет значения при запуске конфигураций, пробовал x86 и x64 одинаковые проблемы
То же самое происходит с LoadLibraryEx.
Заранее спасибо.