2

我知道关于 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。

4

2 回答 2

0

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

于 2014-04-04T21:33:44.113 回答
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) [静态]

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

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

另请参见 removeLibraryPath()、libraryPaths() 和 setLibraryPaths()。

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

于 2014-04-04T22:53:08.573 回答