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

时间:2017-11-20 08:50:23

标签: c++ windows winapi visual-c++ dll

以下代码使用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 ++十加仑头请帮我解决这个问题。

1 个答案:

答案 0 :(得分:5)

documentation说:

  

如果函数成功,则返回值是模块的句柄。

     

如果函数失败,则返回值为NULL。要获取扩展错误信息,请致电GetLastError

当函数成功时,返回值不是NULL。这是你的情景。如果函数成功,文档不会保证GetLastError将返回什么。一些Win32 API函数会在返回之前调用SetLastError(ERROR_SUCCESS),但不是全部。这是一个没有的。

换句话说,没有错误。函数返回值表示成功,您不应该调用GetLastError,因为它返回的值是没有意义的。