Visual Studio Qwindows.dll未找到

b5lpy0ml  于 2023-10-23  发布在  Windows
关注(0)|答案(4)|浏览(169)

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

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

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

rslzwgfq

rslzwgfq1#

使用windeployqt:
转到QT安装文件夹,类似这样:C:\QT\5.5\msvc2013\bin有一个.exe位于这里称为windeployqt从这里开始您的cmd。(Ctrl+Shift+右键单击)。然后键入以下内容:windeploy [full path to your release map]

f0ofjuux

f0ofjuux2#

Qt安装目录不应该在你的PATH环境中。然后重命名Qt目录是不必要的(与OSX相反)。在开发过程中,您可以从Qt Creator内部运行应用程序。
如果您在Qt Creator之外运行应用程序,例如在资源管理器中双击它,Windows也会自动在其搜索路径中包含应用程序目录,实际上它是它将查找的第一个位置。如果它找不到dll,或者它的版本错误(如32/64位),它会尝试在其他地方找到它。不需要设置或加载库路径。使用依赖性步行者找出你需要什么dll。从Qt安装目录中复制它们,或者从Microsoft VC可再发行的exe中提取它们,以防需要msvc dll(我认为你错过了msvcr dll)。所有这些dll复制最好使用qmake脚本完成。您的应用程序需要哪个插件Qt dll是一个试验和错误的问题。对于一些失踪的插件dll的操作系统将发出警告时,运行应用程序。
您可以按照Pim的建议使用windeployqt。我们更喜欢自己控制将要部署的dll。
您的插件平台qwindows.dll的位置是完全正确的。应用程序不加载插件dll,但Qt dll加载插件dll,这些Qt dll确切地知道在哪里可以找到它们。我能想象到的唯一原因是你的应用程序加载了错误的Qt dll,而这个dll找不到平台的dll。不要忘记,许多其他多平台应用程序也使用Qt。他们可能已经将Qt dll转储到system32目录中,或者通过将应用程序目录添加到PATH环境中来暴露它们。欢迎来到DLL地狱。
有一个简单的方法来对抗dll地狱:删除(和恢复)从您的应用程序目录中的dll的一个接一个,每次双击您的应用程序.如果Windows没有抱怨丢失的正是你刚刚删除的那个dll,那个dll不是正确的版本。如果这仍然没有帮助,你可能错过了另一个你的应用程序正在使用的Qt dll。

gab6jxml

gab6jxml3#

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

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 );   
        }
lqfhib0f

lqfhib0f4#

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

相关问题