gpt4 book ai didi

qt - QT 平台 dll 应该去哪里?

转载 作者:行者123 更新时间:2023-12-04 13:12:23 24 4
gpt4 key购买 nike

我创建了一个 DLL,它使用 QTWebKit 的一些功能,然后我通过 Java 端的 JNA 访问它。在我的机器上(显然安装了 QT)它工作正常。当我将它移动到另一台机器来测试它没有安装 qt 时,我得到:

Failed to load platform plugin "windows". Available platforms are:



我的 google fu 指出我还需要包含平台 DLL,即 qwindows.dllqminimal.dll .根据 Deploying an Application on Windows 中的 QT5 文档听起来好像在部署可执行文件时,它会位于名为 platforms 的文件夹中。在保存目录中作为可执行文件。

In contrast to user plugins, Qt plugins have to be put into subdirectories matching the plugin type. As we want to deploy the windows platform plugin it has to be put into a "platforms" subdirectory.



这使我陷入困境。我有一个dll,而不是一个可执行文件。所以我不知道把平台文件夹放在哪里。我试图将它放在我正在执行我的测试应用程序的同一目录中,但这不起作用。

那么我应该把平台目录放在哪里才能让 QT 找到它呢?

编辑:
由于我没有太多反馈,也许有更好的方式来表达/解决这个问题。

我如何告诉 QT 在哪里可以找到平台 DLL?

似乎必须有一种方法来实现这一点。当我在我的机器上运行它时,它最终会查找 C:\Qt2\Qt5.0.2\5.0.2\msvc2012_64\plugins\platforms .所以似乎有米

最佳答案

对于您需要创建 QApplication 的场景,我找到了两种可能的解决方案。在 DLL 或库中(基本上不同于具有 exe 的普通创建 Qt 应用程序)。

  • 最简单的解决方法是设置系统环境变量QT_QPA_PLATFORM到您期望的文件夹 platforms位于。我不喜欢这个解决方案,因为担心它会干扰终端系统上安装的其他应用程序。
  • 下一个解决方案是利用普通 QT 应用程序将使用的命令行参数。在普通 Qt 应用程序中 QApplication将在您的主要创建类似于:
    int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    //other code

    return app.exec();
    }

    那么我们必须创建 argvargc无论如何,在这一点上,利用它对我们有利。
    char *argv[] = {"YourAppName","-platformpluginpath", "C:/your/path/to/dll/folder", NULL};
    int argc = sizeof(argv) / sizeof(char*) - 1;

    QApplication app(argc, argv);

  • 注意:即使现在谷歌搜索 -platformpluginpath我找不到任何有关它的信息。或者有关哪些其他命令行参数可用于 QT 的信息。我在寻找解决方案时通过深入研究 QT 源代码找到了它。因此,如果有人碰巧有指向包含该信息的资源的链接,那么留下评论会很方便。

    关于qt - QT 平台 dll 应该去哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16843303/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com