2012-06-05 10 views
5

Smokeの内容はわかりません。私はその煙がC++コード用のCラッパーを生成し、生成された関数を使ってヘッダーファイルを作成することを期待しています。KDEのSmokeの使い方は?

しかし、C++ヘッダーでsmokegenを実行すると、私はちょうどSmokeクラスと<sourcename>_smoke_init()関数へのポインタをエクスポートする小さなヘッダを得ることができます。

私はこれと何をする必要がありますか?

+1

rtfm?またはマニュアルはありませんか?そのソースコードを読んで? – Abyx

答えて

7

スモークは実行時バインディングジェネレータです。スモークは、それを知っていればgobject-inrospectionのようなものです。

つまり、バインドするコードに関する情報を生成し、ライブラリとして利用できるようにします。生成されたライブラリを使用するには、バインディングを生成したコードに関する情報を取得するSmoke API(C++ API)に対してコードを記述し、Smoke APIを使用して関数をコードに呼び出す必要がありますラッピング。あなたは煙のAPIは、ここで紹介し、いくつかのトリッキーな部分についてhttp://techbase.kde.org/Development/Languages/Smoke/API_Documentationされているが、

(ここで作成QtのウィジェットのHello Worldの例に)結合されているコードを呼び出すためにAPIを使用する方法

ページhttp://techbase.kde.org/Development/Languages/Smokeでの例は示しています私が見つけた主な情報源はsmoke.hヘッダです。

私はSmokeにCバインディング(https://github.com/pankajp/pysmoke/blob/master/include/smokec.h)を開発しました。これは、いくつかの簡単なプログラムで既に動作する、煙に基づいてQt-pythonバインディングを作成しようと試みました。

代わりに、単純なC++ライブラリをCに公開することに興味があれば、C言語でサブクラスを作成することを迷惑にならないようにすることができます(どんな方法でも)や仮想メソッドや保護されたメソッドをオーバーライドすることができます。つまり、既存のコードをそのまま拡張しないで使用したい場合は、手動でバインディングを書き直す方が良いでしょう(Smoke C++ APIの場合と同様です関数ポインタを渡してCで仮想メソッドを実装する方法)

関連する問題