【问题标题】:shiboken typesystem not inheriting classesshiboken 类型系统不继承类
【发布时间】:2016-04-10 22:50:34
【问题描述】:
我有两个 shiboken 库可以将 Qt 绑定导出到 Python。
我在 Lib2 中的子类 Lib1 不从绑定继承任何方法,包括任何 QWidget/QObject 方法。
我已经加载了类型系统:
<load-typesystem name="source/plugin/typesystem_lib1.pyside.xml" generate="no" />
生成的绑定是可用的,但它缺少继承的方法。
如果有影响,代码将被命名空间。
有人遇到过这样的事情吗?
【问题讨论】:
标签:
python
c++
qt
binding
【解决方案1】:
编辑:
看起来 shiboken 实际上是根据 shiboken-header 文件 (global.h) 中的导入顺序添加这些的
因此,您需要确保在包含该标头之前包含该标头的所有依赖项,并且所有包含都必须在 shiboken-header 中,您不能包含包含其他文件的文件,因为它们不会被尊重。
此外 shiboken 不会使用完整路径,仅使用标题名称,因此我在构建期间创建了一个自动符号链接,该链接创建到我的标题的符号链接并将它们命名为 path_to_data.h 是唯一的。
/编辑
原来这失败的原因是因为我的两个类文件同名,包含信息的时候shiboken搞糊涂了。
Shiboken 从 shiboken-header 加载标头,但它将它们剥离为仅文件名而不是保留完整路径,这意味着我们得到:
#include "/path/to/data.h"
#include "data.h"
如果 data.h 位于包含路径的某个位置,它将在其中找到具有相同名称的类。
我认为这是一个错误,但希望这可以帮助其他遇到此问题的人。