6

QtCreatorのプロジェクトtemplete「Libraries/QtQuick 2 Extension Plugin」を使用して、Qt5/QML共有ライブラリとしてテストプラグインを作成しました。私の開発環境は、Qt-5.0.0とQtCreator-2.6を備えたLinuxです(詳細は下部に追加されています)。

ソースファイル(要点):https ://gist.github.com/4467883

ソースファイルはデフォルトで変更なしで生成されます。プロジェクト名は「untitled」、URIは「com.mycompany.mycomponents」、オブジェクトクラス名は「MyItem」です。SRCDIRとしての「/tm​​p/untitled」内のソースファイル。

そして、それをビルドして、ライブラリファイルを「libuntitled.so」「qmldir 」として出力し、「/ tmp/untitled-build」内のいくつかのオブジェクトファイルをDESTDIRとして出力します。

$ ls /tmp/untitled-build
Makefile  libuntitled.so  moc_myitem.cpp 
moc_myitem.o  moc_untitled_plugin.cpp  moc_untitled_plugin.o  myitem.o
qmldir  untitled_plugin.o

しかし、 qmlsceneコマンドでテストQMLソースとして「/tmp/test/test.qml」のライブラリを使用することはできません。

$ mkdir /tmp/test; cd /tmp/test
$ vim test.qml

「test.qml」(要点):https ://gist.github.com/4474422

$ qmlscene test.qml

失敗しQML_IMPORT_TRACEログは次のとおりです。

QQmlImportDatabase::addImportPath: "/usr/lib64/qt5/qml"
QQmlImportDatabase::addImportPath: "/usr/bin"
QQmlImports(file:///tmp/test/test.qml)::addImplicitImport
QQmlImports(file:///tmp/test/test.qml)::addLibraryImport: "QtQuick" 2.0 as ""
QQmlImports(file:///tmp/test/test.qml)::importExtension: loaded "/usr/lib64/qt5/qml/QtQuick.2/qmldir"
QQmlImportDatabase::importPlugin: "QtQuick" from "/usr/lib64/qt5/qml/QtQuick.2/libqtquick2plugin.so"
file:///tmp/test/test.qml:2 module "com.mycompany.mycomponents" is not installed

そして、「-I」オプションを試してください。

$ qmlscene test.qml -I /tmp/untitled-build

それも失敗です。ログは次のとおりです。

QQmlImportDatabase::addImportPath: "/usr/lib64/qt5/qml"
QQmlImportDatabase::addImportPath: "/usr/bin"
QQmlImportDatabase::addImportPath: "/tmp/untitled-build"
QQmlImports(file:///tmp/test/test.qml)::addImplicitImport
QQmlImports(file:///tmp/test/test.qml)::addLibraryImport: "QtQuick" 2.0 as ""
QQmlImports(file:///tmp/test/test.qml)::importExtension: loaded "/usr/lib64/qt5/qml/QtQuick.2/qmldir"
QQmlImportDatabase::importPlugin: "QtQuick" from "/usr/lib64/qt5/qml/QtQuick.2/libqtquick2plugin.so"
file:///tmp/test/test.qml:2 module "com.mycompany.mycomponents" is not installed

そして、「/ tmp / test/qmldir」で試してください。

$ vim /tmp/test/qmldir

"tmp / test / qmldir"(要点):https ://gist.github.com/4474497

それは失敗です。ログ:

QQmlImportDatabase::addImportPath: "/usr/lib64/qt5/qml"
QQmlImportDatabase::addImportPath: "/usr/bin"
QQmlImports(file:///tmp/test/test.qml)::addImplicitImport
QQmlImports(file:///tmp/test/test.qml)::importExtension: loaded "/tmp/test/qmldir"
QQmlImportDatabase::importPlugin: ".tmp.test" from "/tmp/untitled-build/libuntitled.so"
Module '.tmp.test' does not contain a module identifier directive - it cannot be protected from external registrations.
QQmlImports(file:///tmp/test/test.qml)::addLibraryImport: "QtQuick" 2.0 as ""
QQmlImports(file:///tmp/test/test.qml)::importExtension: loaded "/usr/lib64/qt5/qml/QtQuick.2/qmldir"
QQmlImportDatabase::importPlugin: "QtQuick" from "/usr/lib64/qt5/qml/QtQuick.2/libqtquick2plugin.so"
file:///tmp/test/test.qml:2 module "com.mycompany.mycomponents" is not installed

qmlscene(またはqmlviewer5)を使用したテスト.qml( "/ tmp / test.qml")でライブラリ( "/tmp/untitled-build/libuntitled.so")を使用するにはどうすればよいですか?

環境の詳細(openSUSE-12.2に基づく):

$ uname -a
Linux LH-MAIN 3.4.11-2.16-desktop #1 SMP PREEMPT Wed Sep 26 17:05:00 UTC 2012 (259fc87) x86_64 x86_64 x86_64 GNU/Linux
$ g++ --version | head -n1
g++ (SUSE Linux) 4.7.1 20120723 [gcc-4_7-branch revision 189773]
$ qmake -v            
QMake version 3.0
Using Qt version 5.0.0 in /usr/lib64
$ qtcreator -version 2>&1 >/dev/null | grep "^[^ ].*" | head -n1
Qt Creator 2.6.1 based on Qt 5.0.0
$ qmlviewer5 -v    
Qml debugging is enabled. Only use this in a safe environment!
Qt QML Viewer version 5.0.0

参照:

  1. http://doc-snapshot.qt-project.org/5.0/qtcore/plugins-howto.html
  2. http://doc-snapshot.qt-project.org/5.0/qtcore/qtplugin.html
  3. http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-qmldir.html
  4. http://qt-project.org/doc/qt-5.0/qtqml/examples-quick-tutorials-extending-chapter6-plugins.html
4

1 に答える 1

4

plugin.soあなたとqmldirファイルを次のようなフォルダに入れてみてください。

- myproject
    - imports
        - com
            - mycompany
                - mycomponents
                    - libuntitled.so
                    - qmldir

imports次に、ディレクトリをQML2_IMPORT_PATH環境変数 に追加します。export QML2_IMPORT_PATH=/path/to/myproject/imports これは私のLinuxボックスでうまくいきました。

于 2013-07-02T17:13:35.357 に答える