我有两个 shiboken 库可以将 Qt 绑定(bind)导出到 Python。
我在 Lib2 中的类是 Lib1 的子类,不从绑定(bind)继承任何方法,包括任何 QWidget/QObject 方法。
我已经加载了类型系统:
<load-typesystem name="source/plugin/typesystem_lib1.pyside.xml" generate="no" />
生成的绑定(bind)是可用的,但它缺少继承的方法。
如果有所不同,代码将被命名空间。
有没有人遇到过这样的事情?
最佳答案
编辑:
看起来 shiboken 实际上是根据 shiboken-header 文件 (global.h) 中的导入顺序添加了这些
因此,您需要确保在包含该 header 之前包含该 header 的所有依赖项,并且所有包含都必须在 shiboken-header 中,您不能包含包含其他文件的文件,因为它们不会被尊重。
此外,shiboken 不会使用完整路径,仅使用 header 名称,因此我在构建期间创建了一个自动符号链接(symbolic link),它创建了一个符号链接(symbolic link)到我的 header 并将它们命名为 path_to_data.h 是唯一的。
/编辑
原来失败的原因是因为我的两个类文件具有相同的名称,并且 shiboken 在包含信息时混淆了。
Shiboken 从 shiboken-header 加载 header ,但它将它们剥离为仅文件名而不是保留完整路径,这意味着我们得到:
#include "/path/to/data.h"
#include "data.h"
如果 data.h 位于包含路径中的某处,它将在其中找到具有相同名称的类。
我会认为这是一个错误,但希望这能帮助其他遇到此问题的人。
关于python - shiboken 类型系统不继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36536476/