代码之家  ›  专栏  ›  技术社区  ›  Dhyan Deep A.K

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

  •  0
  • Dhyan Deep A.K  · 技术社区  · 7 年前

    以下代码使用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不为null,但函数GetLastError()返回系统错误代码1627(函数在执行期间失败)。

    这一错误的可能原因是什么?

    web上没有太多关于此错误代码的文档, 请帮我解决这个问题。

    1 回复  |  直到 7 年前
        1
  •  5
  •   David Heffernan    7 年前

    这个 documentation 说:

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

    NULL . 要获取扩展错误信息,请调用 GetLastError .

    当函数成功时,返回值不是 无效的 . 这是您的场景。文件没有承诺什么 错误信息 如果函数成功,将返回。某些Win32 API函数将调用 SetLastError(ERROR_SUCCESS) 在回来之前,但不是全部。这是一个没有。

    换句话说,没有错误。函数返回值表示成功,您不应该调用 错误信息