Qt und laden der plugins Verwirrung

Wir haben eine (ziemlich grosse) Applikation, die:

  1. verwendet QML als seine Oberfläche, eine der Anwendungen' Fenster verwendet QML-Komponenten gespeichert in QML-Komponenten Bereitstellung von plugins (nennen wir es config-plugin)
  2. mehrere andere plugins, die geladen werden dynamisch über QPluginLoader an.

Eines dieser plugins ist auch mit einer QML-Schnittstelle, die auch die Bedürfnisse der QMLs zur Verfügung gestellt von der QML-Komponente, die config-plugin.

Das Haupt-problem ist das folgende:

  1. wenn wir laden die anderen plugins, die "theoretisch" initialisieren wird die QML plugin bietet (durch Aufruf von registerTypes zur qmlRegisterType Aufrufe), die von QML plugin ist zugänglich von den anderen plugins "- Schnittstelle, aber nicht aus unseren Anwendungen " - Schnittstelle (Bedeutung: wenn wir das Fenster erstellen, in die Haupt-app mit der QML aus dem plugin nichts sichtbar, aber wir sehen aus den logs (Konsole.log), dass alle Komponenten erstellt wurden, normalerweise)

  2. wenn wir den hack in das system ein, und rufen Sie aus der main-app direkt die registerTypes der QML plugin bietet dann die wichtigsten Anwendungen QML-Oberfläche zeigt die config-Komponenten aus der config-QML plugin bietet, jedoch die anderen plugin nicht geladen wird, mit einer Beschwerde wie:

Plugin loader error: "Failed to initialised plugin /usr/lib/vcs-gui/plugins/libother.so: qrc:///wbmshi-gui/SettingsBrowser.qml:2:1: plugin cannot be loaded for module \"conftree\": Namespace 'conftree' has already been used for type registration"

(wo conftree ist der eigentliche name des config-plugin)

Um Dinge zu machen, zu verschleiern, dieses Verhalten begann, als wir umgestellt haben von den alten qmake basierte build-system zu cmake an. Möglicherweise sind wir nicht verwalten, neu zu erstellen, einige von qmake ' s black magic tricks.

Jeder Vorschlag ist herzlich willkommen, im Umgang mit dieser situation.

0
2019-09-19 11:05:34
Quelle
0 Antworten

Sehen Sie sich andere Fragen zu Tags an