1

我想在 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); 
    }
}
4

2 回答 2

3

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

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

于 2019-09-16T20:48:23.597 回答
2

检查错误。

QString QLibrary::errorString() 常量

返回一个文本字符串,其中包含对发生的最后一个错误的描述。目前,只有在 load()、unload() 或 resolve() 出于某种原因失败时才会设置 errorString。

于 2019-09-16T20:00:31.257 回答