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