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标头.
我已经开发了一个C绑定(https://github.com/pankajp/pysmoke/blob/master/include/smokec.h)来尝试编写基于烟雾的Qt-python绑定,这已经适用于某些人简单的程序.如果你想使用来自C的Smoke,你可能会发现它是一个起点.
相反,如果您只是想将一个简单的C++库暴露给C,而不必费心在C中创建子类(以任何方式)并覆盖虚拟或受保护的方法,那么您只想使用现有代码而不扩展它无论如何,你可能最好手动编写绑定(就像我为Smoke C++ API所做的那样,尽管我还提供了一种通过传递函数指针在C中实现虚方法的方法)