2016-04-10 1 views
0

Ich habe zwei Shiboken-Bibliotheken, um Qt-Bindungen nach Python zu exportieren.
Meine Klassen in Lib2, die Unterklasse Lib1 erben keine Methoden aus der Bindung einschließlich QWidget/QObject-Methoden.Shiboken-Typsystem erbt keine Klassen

Ich habe die Typisierung geladen:

<load-typesystem name="source/plugin/typesystem_lib1.pyside.xml" generate="no" /> 

Und die resultierende Bindung ist brauchbar, aber es ist die geerbten Methoden fehlt.
Der Code ist Namespace, wenn das einen Unterschied macht.

Hat jemand mit so etwas Glück gehabt?

Antwort

0

Edit:
Es sieht aus wie shiboken fügt tatsächlich diese auf der Grundlage der Einfuhr Reihenfolge in der shiboken-Header-Datei (global.h)
So müssen Sie alle Abhängigkeiten dieser Header, um sicherzustellen, enthalten sind, bevor Sie diesen Header enthalten und alle Includes müssen in der Shiboken-Kopfzeile enthalten sein. Sie können keine Datei einschließen, die andere Dateien enthält, da sie nicht berücksichtigt werden.
Auch Shiboken wird nicht einen vollständigen Pfad verwenden, nur den Header-Namen, so habe ich eine automatische Sym-Link während der Erstellung erstellt, die einen Symlink zu meinen Headern erstellt und sie path_to_data.h eindeutig benannt.
/bearbeiten

So stellt sich heraus, dass der Grund dafür, dass dies nicht möglich ist, weil meine zwei Klassendateien den gleichen Namen haben, und shiboken wird verwirrt, wenn die Informationen einschließlich.

Shiboken lädt die Header aus dem shiboken-Header, aber es streift sie nur den Dateinamen statt den vollständigen Pfad zu halten, was bedeutete, dass wir bekommen:

#include "/path/to/data.h" 
#include "data.h" 

Und wenn data.h irgendwo ist Der Include-Pfad wird die Klasse mit dem gleichen Namen darin finden.

Ich würde dies als einen Fehler betrachten, aber hoffentlich hilft dies jedem anderen, dieses Problem zu lösen.