【问题标题】:Plugin is not recognized in QML Desktop Appication DeploymentQML 桌面应用程序部署中无法识别插件
【发布时间】:2012-11-27 16:26:43
【问题描述】:

我在 Windows7 上用 c++ qnd Qt Creator(QML) 编写了一个 Qt Quick Desktop 应用程序。现在我必须部署它。

我在我的应用程序中使用 Qt Quick Desktop Components 插件,我已根据these 说明安装它,并且我正在使用它:“import Qt.labs.components”,如那里所写。

我尝试添加到 .pro 文件中:

QML_IMPORT_PATH = C:\QtSDK\Desktop\Qt\4.7.4\mingw\imports\Qt\labs\components

但我发现没有它也能正常工作,于是我将其移除。

我已经阅读了如何部署这样的应用程序here 的指南,并遵循了它;我现在有一个部署文件夹,其中包含:.exe 文件、所需的 dll 和一个文件夹层次结构,例如:Qt/labs/components。

在组件中,我放置了 styleplugin.dll(用于桌面组件)和一个 qmldir 文件,内容为:plugin styleplugin,与文档中的完全一样。

但是当我从另一台计算机的部署文件夹中运行我的 application.exe 时,我得到一个白色的空窗口,这意味着:它没有找到 .dll 文件。

请问你有什么问题可以解释一下吗?

【问题讨论】:

    标签: qt plugins dll desktop qml


    【解决方案1】:

    我知道两个原因,当应用程序无法加载插件dll时:

    1. 插件dll的某些依赖项丢失或找不到,这就是它无法加载的原因。 Qt Creator 或 Visual Studio 环境可能与系统环境不同。例如,您的 IDE 可以修改 PATH 环境变量。在启动应用的同一环境中使用 Microsoft Dependency Walker 工具检查插件的依赖项可用性。
    2. 应用在标准目录中找不到插件。要检查这一点,您应该明确指定插件导入目录:

      QDeclarativeView *rootView = new QDeclarativeView()
      rootView->engine()->addImportPath(QLatin1String("path/to/your/imports"));
      

    【讨论】:

    • Tnx,我修复了导入路径,现在 qt 知道在哪里可以找到组件文件夹,但似乎 styleplugin.dll 文件不够,我需要在部署文件夹中拥有所有.qml 文件,没有它就无法工作,但我希望 .dll 文件独立工作,没有 .qml 文件。现在我的部署文件夹中有:application.exe、其余的 .dll 和一个文件夹层次结构,如:Qt/labs/components。在组件文件夹中,我必须拥有所有组件 qml、组件 qml 的 qmldir 文件以及带有 styleplugin.dll 的插件文件夹。我必须想办法辞职 qml's!!!!
    • 我不知道如何隐藏插件的 qml 文件。我见过的所有插件都按原样导出它们。如果您能找到解决方案,请在此处告诉我。
    • 如果 qmldir 文件通过相对路径引用 dll 插件,这可能是可行的(即插件 myplugin ../../../myplugin.dll 或类似的东西)Такие пироги :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多