【发布时间】:2016-03-29 04:36:07
【问题描述】:
我的一个应用程序无法在唯一的机器上加载系统库。 LoadLibraryEx 返回 0,GetLastError 返回 87(参数错误)。
这会导致这样的错误,我该如何调试它?
错误仅出现在属于我的客户端(服务器 2008R2)的单台机器上。库位于 system32 文件夹中。代码如下:
HMODULE lib = LoadLibraryEx(L"authui.dll", NULL,
LOAD_LIBRARY_AS_DATAFILE | LOAD_LIBRARY_SEARCH_SYSTEM32);
if (lib == NULL)
{
DWORD err=GetLastError();
Log(L"error id: ", err);
throw;
}
我无法在我的 2008R2 副本上重现该错误,并且不知道是什么导致了该错误。我的应用是用 VS2015 C++(纯 WinApi,没有 MFC 或第三方库)编写的,它是 64 位的。
【问题讨论】:
-
您是否阅读过 msdn 关于使用 LOAD_LIBRARY_SEARCH_SYSTEM32 的说明?看来你需要先安装一些补丁。请参阅LoadLibraryEx doc。
-
哦,我相信我读过文档,但似乎没有。将尽快与客户进行测试。谢谢。
-
为什么不用绝对路径?
-
因为它会多添加一行代码来解码 %windir%
标签: c++ winapi loadlibrary