1


1

.NETプロジェクトでC ++クラスライブラリを使用する方法
netプロジェクトでは、C ++で記述されたサードパーティのクラスライブラリを使用する必要があります。 私はすでにプロジェクトのコンテキストメニュー 'Add a refence …​'からこのDLLへの参照を直接追加しようとしましたが、このDLLがCOMオブジェクトモデルを実装していないと想定しているため動作しませんでした。

現在どのようなオプションがありますか? このDLLの周りに.netラッパーを作成することを提案する人もいますが、私は過去にそれをやったことがないので、いくつかの例を使って簡単な紹介を探しています。 私が過去に行った最も近いことは、pInvokeを使用して外部ライブラリからメソッドを呼び出すことでした(たとえばwin32.dllから)が、この場合、ネイティブC ++タイプを.netの同等の表現にラップする必要があるかもしれません説明するインスタンス変数であるため、pInvokeで十分かどうかわかりません。

誰かが私を正しい方向に向けることができたら本当に感謝しています。さらに情報が必要な場合はお知らせください。

どうもありがとう。

3 Answer


2


私が知っている2つのオプションがあります

  1. P/Invoke これはDllImportルートです

  2. C ++ / CLIラッパー http://www.codeproject.com/KB/mcpp/quickcppcli.aspx [(チュートリアルはこちら)]


2


ライブラリのソースがないか、ライブラリをC ++ / CLIアセンブリに変換できない別の理由があると仮定します

ラッパージェネレーターであるSWIG(http://www.swig.org/)に興味があるかもしれません。 SWIGにC ++ライブラリへのパブリックインターフェイスを与えると、C#の1つであるサポートされているバックエンド言語のラッパーが作成されます。


1


あなたが言ったように、それをする2つの方法があります:

1)P / Invokeを使用してC ++関数をインポートします。

2)アンマネージコードをラップして管理し、「参照の追加」を使用してそのライブラリを.netアプリケーションに追加します。 http://www.codeguru.com/cpp/cpp/cpp_managed/interop/article.php/c6867 [ここ]は、このための簡単な例です。

http://msdn.microsoft.com/en-us/library/ms235282(v = VS.80).aspx [この]リンクは、.netの相互運用性に関する詳細情報を提供します。

これらのP / Invokeから行うのが最も簡単な方法です。 C ++の同等の型の場合 .net, you can do marshaling which is also easy and you will find lot 同じための多くのチュートリアル。