我想在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);
}
}
答案 0 :(得分:3)
可能有很多原因,无法通过此处提供的细节进行诊断。
例如:使用Qt的进程是64位,而DLL是32位。或相反亦然。另一个:DLL依赖于QLibrary无法使用的其他DLL。我对您的建议:使用dependency walker或类似的实用程序来诊断这些问题。
答案 1 :(得分:2)
检查错误。
QString QLibrary :: errorString()const
返回带有最后发生的错误的描述的文本字符串。当前,仅在由于某种原因load(),unload()或resolve()失败时才设置errorString。