DllImport LoadLibrary и LoadLibraryEx из kernel32 работает на .NET Framework 4.0, но не на 4.5+ - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть кусок кода, который загружает родную 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.

Заранее спасибо.

...