2011-11-15 12 views
3

私はいくつかのクラスを含むアンマネージC++ DLLを提供されています。アンマネージC++ DLLのC++/CLIラッパーDLLを作成する必要がありますか?

これらのクラスのいくつかをC#で使用できるようにする必要があります。今までの私の研究に基づいて、管理型と非管理型の変換を処理するC++/CLIラッパーDLLを作成する必要があるように思えます。誰かが基本的に各クラスのC++/CLIバージョンを作成し、アンマネージC++タイプのインスタンスを含むいくつかの例を見てきました。私がここでやろうとしていることを実行する最良の方法は何ですか?アンマネージDLLにはおそらく10-15クラスが用意されています。今はそれらのうちのいくつかだけを使う必要がありますが、将来はもっと使う必要があります。ありがとう!

+0

DllMainがそれだけの場合、何もしないので、それを放棄することもできます。それ以外は、アレックスは正しい。別のオプションはswig(http://www.swig.org/)かもしれませんが、どのように動作し、すべての警告を修正するのにかかる時間は、10ラッパーを書き込む時間よりも長くなる可能性があります。醜くて読みにくいかもしれません。 – stijn

+0

[C++/CLI Mixed Mode DLL Creation]の複製が可能です。(http://stackoverflow.com/questions/2691325/c-cli-mixed-mode-dll-creation) –

答えて

5

はい、このライブラリのC++/CLIラッパーを作成し、このラッパーで内部的にアンマネージクラスを使用する必要があります。 CスタイルのAPIを公開するアンマネージライブラリの場合、PInvokeオプションもありますが、C++クラスでは機能しません。

また、COMラッパーの作成について考えることもできます。ネイティブCOMクライアントと.NETの両方でこのライブラリを使用することも考えられます。しかし、C++/CLIラッパーの作成はもっと簡単な作業ですと私は思います。

+0

私はC++/CLIラッパー。 stijnと同様に、私はswigをこの目的のために使いやすいかどうかを知りたいと思う。後でやりたいことかもしれません。将来、swigがWinRTクラスを自動的に生成するために使用できるかどうかも興味深いかもしれません。 –

関連する問題