我有一段代码可以加载本机dll,它使用DllImport从kernel32中的LoadLibrary加载dll
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也发生同样的事情。
谢谢。