如何使用 KDE 的烟雾?



我无法理解烟雾是什么。我一直期望烟雾会为C++代码生成 C 包装器并使用生成的函数创建头文件。

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

我应该怎么做?

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

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

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

这里介绍 Smoke API http://techbase.kde.org/Development/Languages/Smoke/API_Documentation 用于一些棘手的部分,但我找到的主要信息来源是 smoke.h 标头。

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

相反,如果您只是对向 C 公开一个小型简单的C++库感兴趣,而不用费心在 C 中创建子类(以任何方式)并覆盖虚拟或受保护的方法,也就是说,您只想使用现有代码而不以任何方式扩展它,那么你最好手动编写绑定(就像我为 Smoke C++ API 所做的那样, 虽然在那里我也提供了一种通过传递函数指针在 C 中实现虚拟方法的方法)

相关内容

  • 没有找到相关文章

最新更新