以下代码使用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 ++十加仑头请帮我解决这个问题。
答案 0 :(得分:5)
如果函数成功,则返回值是模块的句柄。
如果函数失败,则返回值为
NULL
。要获取扩展错误信息,请致电GetLastError
。
当函数成功时,返回值不是NULL
。这是你的情景。如果函数成功,文档不会保证GetLastError
将返回什么。一些Win32 API函数会在返回之前调用SetLastError(ERROR_SUCCESS)
,但不是全部。这是一个没有的。
换句话说,没有错误。函数返回值表示成功,您不应该调用GetLastError
,因为它返回的值是没有意义的。