如何使用KDE的Smoke?

时间:2012-06-05 10:34:46

标签: binding kde smoke

我无法得到Smoke的内容。我一直期待烟会为C ++代码生成C包装器并创建带有生成函数的头文件。

但是在C ++标题上运行smokegen会给我一个小标题,它只会导出指向某个Smoke类和<sourcename>_smoke_init()函数的指针。

我该怎么办呢?

1 个答案:

答案 0 :(得分:7)

Smoke是一个运行时绑定生成器,有点像gobject-introspection,如果你知道的话。

这意味着它会生成有关您绑定的代码的信息,并使其可用作库。为了使用生成的库,您必须针对Smoke API(这是一个C ++ API)编写代码以获取有关为其生成绑定的代码的信息,并使用Smoke API将函数调用到您自己的代码中包装

页面http://techbase.kde.org/Development/Languages/Smoke中的示例显示了如何使用API​​调用您正在绑定的代码(在此处创建Qt Widgets hello world示例)

Smoke API在这里引入了http://techbase.kde.org/Development/Languages/Smoke/API_Documentation,用于一些棘手的部分,但我发现的主要信息来源是smoke.h标题。

我在尝试编写基于烟雾的Qt-python绑定时已经开发了一个C绑定(https://github.com/pankajp/pysmoke/blob/master/include/smokec.h),这已经适用于一些简单的程序。如果你想使用来自C的Smoke,你可能会发现它是一个起点。

相反,如果您只想将一个简单的C ++库暴露给C,而不必费心在C中创建子类(以任何方式)并覆盖虚拟或受保护的方法,那么您只想使用现有的代码如果不以任何方式扩展它,那么你最好手动编写绑定(就像我为Smoke C ++ API所做的那样,尽管我还提供了一种通过传递函数指针在C中实现虚方法的方法)