2012-06-05 33 views
5

我不明白Smoke是什麼。我一直在期待這種冒煙會爲C++代碼生成C封裝並使用生成的函數創建頭文件。如何使用KDE的Smoke?

但運行在C++頭smokegen給我的小頭,這只是出口指向一些Smoke類和<sourcename>_smoke_init()功能。

我該怎麼做?

+1

rtfm?或者沒有手冊?然後閱讀它的源代碼? – Abyx

回答

7

Smoke是一個運行時綁定生成器,有點像gobject-introspection,如果你知道的話。

這意味着它會生成有關您綁定的代碼的信息並將其作爲庫提供。爲了使用生成的庫,您必須針對Smoke API(它是一個C++ API)編寫代碼以獲取已爲其生成綁定的代碼的信息,並使用Smoke API將函數調用到您所使用的代碼中包裝。

http://techbase.kde.org/Development/Languages/Smoke頁面的例子說明了如何使用API​​來調用到你綁定

煙霧API。這裏介紹http://techbase.kde.org/Development/Languages/Smoke/API_Documentation對於一些棘手的部分,但(創建Qt控件的hello world這裏的例子)的代碼我發現的主要信息來源是smoke.h頭文件。

我公司開發的C語言綁定(https://github.com/pankajp/pysmoke/blob/master/include/smokec.h)在我試圖寫一個Qt的蟒蛇煙綁定所述基於煙霧,這已經適用於一些簡單的程序。如果你想使用來自C的Smoke,你可能會發現它是一個起點。如果你只想將一個簡單的C++庫暴露給C,而不打算在C中創建子類(以任何方式)並重寫虛擬或受保護的方法,那就是您只想使用現有代碼而不以任何方式進行擴展,那麼您可能會更好地手動編寫綁定(就像我爲Smoke C++ API所做的那樣,儘管我也提供了一種通過傳遞函數指針在C中實現虛擬方法的方法)