binding - 如何使用 KDE 的 Smoke?

标签 binding kde-plasma smoke

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

但运行 smokegen在 C++ header 上给了我很小的 header ,它只是导出指向某些 Smoke 的指针类和 <sourcename>_smoke_init()功能。

我该怎么办?

最佳答案

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

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

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

Smoke API 在这里介绍 http://techbase.kde.org/Development/Languages/Smoke/API_Documentation对于一些棘手的部分,但我发现的主要信息来源是smoke.h header 。

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

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

关于binding - 如何使用 KDE 的 Smoke?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10895737/

相关文章:

linux - 在 Ubuntu 终端上使用 SHIFT+箭头(向左或向右)选择文本不起作用

javascript - 如何在 Javascript 或 CSS 中实现完整的背景烟雾效果

wpf - 如何在用户控件 View 模型中处理来自主窗口的命令

c# - XAML - 为什么数据绑定(bind) TwoWay 不适用于 .net 4.0 中组合框的文本属性?

c# - 当 DataContext 更改时,WPF 绑定(bind) OneWayToSource 将源属性设置为 ""

android - 在 bindService 方法之后从未调用过 onServiceConnected

python - 如何使用 Python 检查哪个窗口管理器正在运行?

linux - KDE - 如何替换所有 Klipper 条目中的某些文本

Dart polymer : binding html files to scripts results in broken bootstrap. Dart 包含 "%5C"个字符

javascript - 如何在SMOKE js验证插件中添加自定义规则?