Qt应用程序无法启动,因为没有找到插件" windows"目录

时间:2014-04-04 18:48:29

标签: c++ qt qt5 qtcore qcoreapplication

我知道有几个答案可以解决Qt这个问题(就像这个问题Qt 5.1.1: Application failed to start because platform plugin "windows" is missing)。我正在使用Qt 5,但似乎这个问题也出现在其他版本中。

接受的答案不是我的问题,但是根据链接,将平台目录复制到可执行文件的解决方案可以正常工作。但是我发现这个解决方案非常不令人满意,因为这意味着我必须在整个地方分发这个相同的目录。在项目中,我必须将它复制到我创建的每个和每个项目的调试/发布分支​​中。正在运行designer.exe我也有这个问题,所以我也必须将它复制到那里,依此类推。

将我的QT安装目录中的插件目录放入PATH并没有解决问题,但我真的不明白为什么。显然有一些自定义代码加载了所需的插件DLL。

所以我想知道是否有一些可接受的方法可以正确地执行此操作,例如设置QT_HOME变量或类似,所以我不必在整个地方复制DLL。

2 个答案:

答案 0 :(得分:0)

尝试使用QCoreApplication :: addLibraryPath(PATH TO PLUGIN FOLDER)。

答案 1 :(得分:0)

一般来说,自己构建Qt是一个坏主意,在这种情况下,甚至不建议使用静态构建。您有几种方法可以解决此问题:

来自文档:

All Qt programs automatically support the following command line options:
\list

    \li \c{-platform} \e {platformName[:options]}, specifies the
        \l{Qt Platform Abstraction} (QPA) plugin.

        Overridden by the \c QT_QPA_PLATFORM environment variable.
    \li \c{-platformpluginpath} \e path, specifies the path to platform
        plugins.

        Overridden by the \c QT_QPA_PLATFORM_PLUGIN_PATH environment
        variable.

  

void QCoreApplication::addLibraryPath(const QString & path) [static]

     

预先指向库路径列表开头的路径,确保首先搜索库。如果path为空或已在路径列表中,则路径列表不会更改。

     

默认路径列表由单个条目组成,即插件的安装目录。插件的默认安装目录是INSTALL / plugins,其中INSTALL是安装Qt的目录。

     

另请参阅removeLibraryPath(),libraryPaths()和setLibraryPaths()。

根据您的确切愿望,这可以通过这种或那种方式解决。