gpt4 book ai didi

c# - LoadLibrary 不会因缺少 DLL : why? 而失败

转载 作者:太空宇宙 更新时间:2023-11-03 17:09:07 24 4
gpt4 key购买 nike

我确定我在文档中遗漏了一些明显的东西。我正在从 C# 调用 LoadLibrary 并传入一个不存在的 DLL。正如我预期的那样,我正在返回 IntPtr.Zero,但是当我调用 Marshal.GetLastWin32Error 时,我总是得到 0。

这是示例。

class Program {

[DllImport("kernel32.dll")]
private static extern IntPtr LoadLibrary(string dllToLoad);

[DllImport("kernel32.dll")]
private static extern bool FreeLibrary(IntPtr hModule);

static void Main(string[] args) {
IntPtr pDll = LoadLibrary(@"c:\NotThere.dll");
int err = Marshal.GetLastWin32Error();
Console.WriteLine(err);
Console.ReadLine();
}
}

我正在将这样的代码添加到一个已经无缘无故无法加载 DLL 的程序中。知道为什么我没有收到错误消息吗?

最佳答案

用于记录错误,以便 Marshal.GetLastWin32Error() 可以读取它们, 你需要有 SetLastError=trueDllImport 上属性:

[DllImport("kernel32.dll", SetLastError=true)]
private static extern IntPtr LoadLibrary(string dllToLoad);

关于c# - LoadLibrary 不会因缺少 DLL : why? 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5804410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com