Qwindows.dll从未在中找到
Qwindows.dll Never Found In
当我在其他机器上运行我的应用程序时,如果我重命名Qt目录,我会得到"此应用程序无法启动,因为它找不到或加载Qt平台插件"windows"。重新安装应用程序可能会解决此问题。"以下是保存应用程序的文件夹的布局:
app.exe
icudt53.dll
icuin53.dll
icuuc53.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
msvcp110.dll
platforms/qwindows.dll
是否有可能强制查找我的应用程序的目录qwindows.dll,而不是QT目录?
使用windeployqt:
转到QT安装文件夹,如下所示:C:QT5.5msvc2013bin
这里有一个.exe
,名为windeployqt
,从这里启动cmd。(ctrl+shift+右键单击)。然后键入以下内容:windeploy [full path to your release map]
Qt安装目录不应该在PATH环境中。然后不需要重命名Qt-dir(与OSX相反)。在开发过程中,您可以从Qt Creator内部运行您的应用程序。
如果你在Qt Creator之外运行你的应用程序,例如在资源管理器中双击它,Windows也会自动在其搜索路径中包括应用程序目录,事实上,它是它要查找的第一个位置。如果它在那里找不到dll,或者它的版本错误(比如32/64位),它会尝试在其他地方找到它。不需要设置或加载库路径。使用依赖项助行器找出您需要的dll。从Qt安装目录复制它们,或者从Microsoft vc可再发行文件exe中提取它们,以防需要msvc dll(我认为您缺少msvcr dll)。所有这些dll复制最好使用qmake脚本完成。你的应用程序需要哪个插件Qt dll是一个试错的问题。对于一些缺失的插件dll,操作系统在运行应用程序时会发出警告。
你可以按照皮姆的建议使用windeployqt
。我们更喜欢自己控制将要部署的dll。
您的插件平台qwindows.dll
的位置完全正确。应用程序不加载插件dll,但Qt dll加载插件dll并且这些Qt dll知道在哪里可以找到它们。我能想象你有问题的唯一原因是你的应用程序加载了错误的Qt dll,而该dll找不到平台dll。不要忘记,许多其他多平台应用程序也使用Qt。他们可能已经在system32目录中转储了Qt dll,或者他们可能通过将应用程序目录添加到PATH环境中来公开它们。欢迎来到dll地狱。
有一种简单的方法可以对抗dll地狱:从你的应用目录中逐个删除(并恢复)dll,每次双击你的应用。如果Windows没有抱怨缺少您刚刚删除的dll,则该dll的版本不正确。如果这仍然没有帮助,你可能会错过你的应用程序正在使用的另一个Qt dll。
我通过在代码中设置路径解决了这个问题。
TCHAR path[_MAX_PATH+1];
GetModuleFileName(GetModuleHandle("myApp.dll"),path,sizeof(path)/sizeof(path[0]));
std::string runningFolder = ExtractFileDir( path );
QStringList paths;
paths.append(runningFolder.c_str());
QCoreApplication::setLibraryPaths(paths);
app = static_cast <QApplication *> (QApplication::instance());
if ( app == NULL )
{
int argc = 0;
app = new QApplication( argc, NULL );
}
在某些情况下,"平台"还必须包含qminimal.dll:https://stackoverflow.com/a/14144077/4149835
platforms/qwindows.dll
platforms/qminimal.dll
- 挂起和取消挂起一个文件DLL
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 从C++dll访问C#中的一行主要参数
- 链接到自行创建的dll失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- C++:将外部库链接到dll库
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 不同的Visual Studio版本中缺少.dll
- 从DLL中删除类的实例
- 如何包装第三方DLL在R中使用
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 当我使用 C++ 中的 C# dll 来使用 Selenium 时,存在异常处理问题
- 部署Qt-dll文件-找不到windows插件,尽管平台/qwindows.dll存在,因此存在libEGL和libGL
- Qwindows.dll从未在中找到