【发布时间】:2017-11-20 08:50:22
【问题描述】:
以下代码使用 LoadLibrary() 在运行时加载 dll。
boolean Load_Internals_dll()
{
boolean result = true;
//LOG_INIT;
HINSTANCE hApexRLIO = LoadLibrary(L"APEX_RLIO_Internals.dll");
printf("Checking getlasterror after loadlibrary:\n",GetLastError());
if(NULL == hApexRLIO)
{
result = false;
printf("[ERR]: Unable to load dll\n");
LOG_PRINT(" [ERR]: Unable to load dll.\n" );
}
result = InitRSIDComm_Lib_Func();
//LOG_EXIT;
return result;
}
加载dll后发现句柄hApexRLIO不为空,但函数GetLastError()返回系统错误码1627(函数执行失败)。
此错误的可能原因是什么?
网络上没有太多关于这个错误代码的文档, VC++十加仑头请帮我解决这个问题。
【问题讨论】:
-
函数成功,因为返回的句柄值不为空,所以
GetLastEror返回的值似乎根本不相关。 -
除非您遇到错误,否则不要致电
GetLastError。 -
@JonathanPotter:这只是大致正确的。一些 API 不将最后一个错误代码设置为失败,一些将其设置为失败,而其他 API 将其设置为成功失败。确切的规则是:不要打电话给
GetLastError,除非文档告诉你这样做。
标签: c++ windows winapi visual-c++ dll