WinAPI函数LoadLibrary()在执行错误期间导致函数失败

以下代码使用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因为它返回的值是没有意义的。