2010-11-27 12 views
2

C++でネイティブのC++ライブラリをラップする方法はありますか?C++/cliラッパーに関する質問

+0

どういう意味ですか?私はそれがあなたが達成しようとしているものに完全に依存していると思います。そう。あなたは何を達成しようとしていますか? – BastiBen

+2

ネイティブC++ライブラリをC++/cliで 'ラッピング'せずに使用できます。 –

+0

コンストラクタとデストラクタの呼び出しをピンボケするのは良い方法ではありません。 –

答えて

6

1つのサイズがすべてに合っているかどうかはわかりませんが、主に機械的な処理です。 refクラスラッパーは、ネイティブC++クラスへのポインタであるプライベートメンバーを宣言する必要があります。コンストラクタでインスタンスを作成します。そのインスタンスを再度削除するには、デストラクタとファイナライザが必要です。

ネイティブC++クラスの各関数について、そのマネージバージョンを記述します。これはほとんどの場合、1対1の呼び出しです。単純に対応するネイティブメソッドを呼び出し、C++ Interopに引数を変換させます。場合によっては、ネイティブメソッドが8ビットのchar *または構造体引数を使用する場合は、管理された引数をネイティブバージョンに変換するためのグルーコードを書く必要があります。

コードの標準パターンはmy answer hereです。私はそれを自動化できるツールであるSWIGについて言及する必要があります。それがどれほど良いか分からず、決してそれを使ったことはありません。