Qt 在QML应用程序中使用预编译插件(通过共享库)

Qt 在QML应用程序中使用预编译插件(通过共享库),qt,plugins,qml,qtquick2,Qt,Plugins,Qml,Qtquick2,我有一个QML插件(编译成.so)由。我希望在我自己的QML应用程序中重新使用它,而不必每次都重新构建它。我想复制。这样就可以用最少的额外代码编写: 导入QQuickMapboxGL 1.0 在我的QML文件的顶部,让它工作 我需要在哪里复制QML项目中的.so,以及如何将其添加到项目中,以便QML运行时可以找到它? 我所尝试的: 创建一个QQuickMapboxGL目录,其中包含libqmapboxgl.so 在该目录中创建一个包含以下内容的qmldir文件: plugin qmapboxg

我有一个QML插件(编译成
.so
)由。我希望在我自己的QML应用程序中重新使用它,而不必每次都重新构建它。我想复制
。这样
就可以用最少的额外代码编写:

导入QQuickMapboxGL 1.0

在我的QML文件的顶部,让它工作

我需要在哪里复制QML项目中的
.so
,以及如何将其添加到项目中,以便QML运行时可以找到它?


我所尝试的:

  • 创建一个
    QQuickMapboxGL
    目录,其中包含
    libqmapboxgl.so
  • 在该目录中创建一个包含以下内容的
    qmldir
    文件:

    plugin qmapboxgl
    
  • 将以下内容添加到我的
    .pro
    文件中:

    INSTALL\u DIR=$$PWD/。/INSTALL
    target.path=$$INSTALL\u DIR
    #将QQuickMapboxGL文件夹复制到安装目录
    plugin.files=QQuickMapboxGL/*
    plugin.path=$$INSTALL\u DIR/QQuickMapboxGL
    安装+=目标插件
    
  • 添加
    makeinstall
    build步骤

  • 这一疯狂黑客行为的结果是:

    无法为模块“QQuickMapboxGL”加载插件:“/my/build/QQuickMapboxGL/libqmapboxgl.so”中的插件验证数据不匹配
    我已经验证了插件和我的应用程序都是用相同版本的g++(
    g++-5(Ubuntu 5.4.1-2ubuntu1~14.04)5.4.1 20160904)和相同的Qt下载(5.7.0)编译的;没有类继承自
    qqqmlextensionplugin
    或相关。它只是一个共享的代码库

    能够通过以下方式解决此问题:

    • 将MapboxGL的头文件添加到我的项目
    • 在my
      main.cpp
      中:
      • #包括“第三方/mapbox gl native/platform/qt/include/qmapbox.hpp”
      • 调用
        QMapbox::registerTypes()(在
        main
        内)
    • libs
      目录中复制
      libmapboxgl.so
      (通过Mapbox的make/cmake构建)
    • myproject.pro
      中添加:
      LIBS+=-L./LIBS-lqmapboxgl
    • 在我的QML代码中,导入QQuickMapboxGL 1.0,然后使用
      MapboxMap
    • 正在将
      libmapboxgl.so
      复制到
      LD\u LIBRARY\u路径所引用的某个位置

    这个库是什么?QML插件?@folibis是的。它是
    QQuickMapboxGL
    from。我想路径应该是'appPath/imports/pluginName/plugin.dll'-@Redanium在提供这些链接后,你忘了添加注释了吗?除了“RTFM”之外,你还建议了什么特别的信息吗?这个当我试图将其包含在我的项目中时,我询问了一个特定的错误。这两个链接中有没有我遗漏的相关内容?