我搞不懂Smoke是什么。我一直期待smoke会为C++代码生成C包装器,并用生成的函数创建头文件。
但是在C++头上运行smokegen会得到很小的头,它只是导出指向一些Smoke类和<sourcename>_smoke_init()函数的指针。
我该拿这个做什么?
发布于 2014-04-09 12:25:33
Smoke是一个运行时绑定生成器,有点像gobject--自省,如果你知道的话。
这意味着它生成关于您绑定的代码的信息,并使其作为库可用。为了使用生成的库,您必须针对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 .h头文件。
在尝试编写基于smoke的Qt-python绑定时,我已经开发了一个用于Smoke的C绑定( https://github.com/pankajp/pysmoke/blob/master/include/smokec.h ),它已经适用于一些简单的程序。如果你想使用C中的Smoke,你可能会发现它是一个起点。
相反,如果您只对向C语言公开一个小的简单C++库感兴趣,而不必费心在C中创建子类(以任何方式)并覆盖虚拟或受保护的方法,即您只想使用现有代码而不以任何方式扩展它,那么您最好手动编写绑定(就像我对Smoke C++ API所做的那样,尽管我还提供了一种通过传递函数指针在C中实现虚拟方法的方法)
https://stackoverflow.com/questions/10895737
复制相似问题