QLibrary没有加载DLL

时间:2019-09-16 19:49:57

标签: qt qlibrary

我想在C ++程序中加载DLL并创建函数指针。为避免混淆,我提供了DLL的绝对路径。但仍然没有加载DLL。

我的代码:

void CallFunctionPointers()
{
    QString strMsg;
    QString strLibPath("D:\\dll\\AtmoRemote.dll");

    QLibrary* m_p_lib = new QLibrary();
    m_p_lib->setFileName(strLibPath);

    if (!m_p_lib->load())
    {
        strMsg = QString("Could not load %1").arg(strLibPath); //<<<<-----------PROGRAM ALWAYS ENTERS HERE
    }
    else
    {
        strMsg = QString("Successfully loaded: %1").arg(strLibPath); 
    }
}

2 个答案:

答案 0 :(得分:3)

可能有很多原因,无法通过此处提供的细节进行诊断。

例如:使用Qt的进程是64位,而DLL是32位。或相反亦然。另一个:DLL依赖于QLibrary无法使用的其他DLL。我对您的建议:使用dependency walker或类似的实用程序来诊断这些问题。

答案 1 :(得分:2)

检查错误。

  

QString QLibrary :: errorString()const

     

返回带有最后发生的错误的描述的文本字符串。当前,仅在由于某种原因load(),unload()或resolve()失败时才设置errorString。