QLibrary 没有加载 DLL
QLibrary is not loading DLL
我想在 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);
}
}
检查错误。
QString QLibrary::errorString() const
Returns a text string with the description of the last error that occurred. Currently, errorString will only be set if load(), unload() or resolve() for some reason fails.
可能有很多原因,无法根据此处提供的详细信息进行诊断。
比如:使用Qt的进程是64位的,DLL是32位的。或相反亦然。另一个:DLL 依赖于 QLibrary 不可用的其他 DLL。我对您的建议:使用 dependency walker 或类似的实用程序来诊断这些问题。
我想在 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);
}
}
检查错误。
QString QLibrary::errorString() const
Returns a text string with the description of the last error that occurred. Currently, errorString will only be set if load(), unload() or resolve() for some reason fails.
可能有很多原因,无法根据此处提供的详细信息进行诊断。
比如:使用Qt的进程是64位的,DLL是32位的。或相反亦然。另一个:DLL 依赖于 QLibrary 不可用的其他 DLL。我对您的建议:使用 dependency walker 或类似的实用程序来诊断这些问题。