Qwindows.dll从来没有find

当我在其他机器上运行我的应用程序时,如果我重命名Qt目录,我得到“此应用程序无法启动,因为它无法find或加载Qt平台插件”窗口“重新安装应用程序可能会解决此问题。 这是包含应用程序的文件夹的布局:

app.exe icudt53.dll icuin53.dll icuuc53.dll Qt5Core.dll Qt5Gui.dll Qt5Widgets.dll msvcp110.dll platforms/qwindows.dll 

有没有可能强制searchqwindows.dll目录而不是QT目录我的应用程序的目录?

Solutions Collecting From Web of "Qwindows.dll从来没有find"

使用windeployqt:

去你的QT安装文件夹,如下所示: C:\QT\5.5\msvc2013\bin这里有一个名为windeployqt.exe从这里开始你的cmd。 (CTRL + SHIFT +右击)。 然后输入以下内容: windeploy [full path to your release map]

我通过在代码中设置路径解决了这个问题。

 TCHAR path[_MAX_PATH+1]; GetmoduleeFileName(GetmoduleeHandle("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 ); } 

Qt安装目录不应该在你的PATH环境中。 然后重新命名Qt目录是不必要的(与OSX相反)。 在开发过程中,您可以从Qt Creator中运行您的应用程序。

如果你在Qt Creator之外运行你的应用程序,比如在浏览器中双击它,Windows也会自动在它的搜索路径中包含应用程序目录,事实上它是它看起来的第一个位置。 如果它不能找到那里的DLL,或者如果它是错误的版本(如32/64位),它会尝试找到其他地方。 没有必要设置或加载库路径。 使用依赖walker来找出你需要什么dll。 复制他们从Qt安装目录或提取他们从微软的vc可再发行exe的情况下,需要msvc dll(我认为你是缺少的msvcr dll)。 所有这些dll拷贝应该最好用qmake脚本来完成。 哪个插件Qt你的应用程序需要是一个试验和错误的问题。 对于一些缺少的插件DLL的操作系统将在运行应用程序时发出警告。

你可以使用windeployqt来关注Pim的建议。 我们宁愿控制自己将要部署的东西。

你的插件平台qwindows.dll位置是完全正确的。 该应用程序不会加载插件的DLL,但Qt DLL的加载插件的DLL,这些QT DLL的确切知道在哪里期待和找到它们。 我可以想象,你有问题的唯一原因是你的应用程序加载错误的Qt DLL,该DLL无法找到平台的DLL。 不要忘记,许多其他多平台应用程序也使用Qt。 他们可能已经将Qt dll转储到了system32目录中,或者他们可能通过将他们的应用程序目录添加到PATH环境中来暴露他们。 欢迎来到地狱。

有一个简单的方法来打击地狱:从你的应用程序删除(和恢复)dir的一个接一个,每次双击你的应用程序。 如果Windows不抱怨完全错过那个DLL,你只是删除该DLL不是正确的版本。 如果这仍然不能帮助你可能错过了另一个Qt你的应用程序正在使用的DLL。

在某些情况下,“ 平台 ”还必须包含qminimal.dll : https : //stackoverflow.com/a/14144077/4149835

平台/ qwindows.dll
平台/ qminimal.dll