我正在尝试从 C# UWP 应用程序调用非托管 dll 中的方法。我这样做,但在非托管 dll 上调用“LoadLibrary()”,以便我可以使用它。
这一切在调试模式下工作正常,但是在发布模式下,我收到一个奇怪的错误:
消息:类初始化方法 Tests.UnitTests.InitializeClient 引发异常。 System.TypeLoadException:System.TypeLoadException:程序集“Client,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”中未解析的 P/Invoke 方法“LoadLibrary!kernel32”,因为它在 UWP 应用程序中不可用。请使用其他 API ,或使用 [DllImport(ExactSpelling=true) 来表明您了解使用非 UWP 应用程序 API 的含义。
这是我调用加载库的方法:
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr LoadLibrary(string librayName);
不幸的是,如果我添加“ExactSpelling = true”,如下所示:
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
public static extern IntPtr LoadLibrary(string librayName);
然后调用它会抛出异常:
System.EntryPointNotFoundException:“无法在 DLL“kernel32”中找到名为“LoadLibrary”的入口点。”
任何帮助深表感谢!
使用 LoadPackagesLibrary 代替:
[DllImport("API-MS-WIN-CORE-LIBRARYLOADER-L2-1-0.DLL", SetLastError = true)]
public static extern IntPtr LoadPackagedLibrary([MarshalAs(UnmanagedType.LPWStr)]string libraryName, int reserved = 0);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)