背景:大規模な課題の一環として、C# ライブラリをアンマネージ C++ および C コードにアクセスできるようにする必要があります。この質問に自分で答えるために、私はここ数日/数週間 C++/CLI を学んでいます。
アンマネージ C++ および C から C# dll を使用して実現するには、さまざまな方法があるようです。簡単に言えば、Interlope サービスを使用する、.com を使用するなどの答えがいくつかあります。regasm、PInvoke の使用 (C# から C++ のみに移行するように見える)、および C++/CLR での IJW の使用 (Interlope サービスのように見える)。ネイティブ C++ および C コードの代わりに IJW を使用して C# dll を呼び出す CLR ラッパーであるライブラリをセットアップするのが最善だと考えています。
詳細:文字列と int の値を C++ コードから C# dll に渡し、void を返す必要があります。
関連性:多くの企業には、C++、C、および C# を組み合わせて使用する言い訳がたくさんあります。パフォーマンス: 通常、アンマネージ コードの方が高速です。インターフェイス: 管理されたインターフェイスは、一般的に保守、展開が容易で、多くの場合、見た目も簡単です。レガシー コードも私たちを強制します。そこにあった(登った山のように)。C# から C++ ライブラリを呼び出す方法の例は豊富にあります。C++ コードから C# ライブラリを呼び出す方法の例は、特に更新された 4.0 以降のコードを見たい場合、Google で見つけるのは困難です。
ソフトウェア: C#、C++/CLR、C++、C、Visual Studio 2010、.NET 4.0
質問の詳細: OK マルチパート質問:
com オブジェクトを使用する利点はありますか? それともPInvoke?それとも他の方法ですか?(Google Land でこのトピックに関する詳細情報を見つけたとしても、ここでの学習曲線は同じように急勾配になると思います。IJW は、私がやりたいことを約束しているようです。IJW ソリューションを探すことをあきらめて、代わりにこれに焦点を当てますか?) (長所/短所?)
C++/CLR で IJW を利用するラッパーを作成するソリューションがあると想像するのは正しいですか? このトピックに関する詳細情報はどこで見つけることができますか。また、Google で十分に検索できなかったとは言わないでください。または、どこで見たかを言わずに MSDN を調べてください。(明確でシンプルなコードを書くために、私はこのオプションを好むと思います。)
質問の範囲を狭める: 私の本当の問題と必要性は、次の小さな質問に答えることだと思います: アンマネージ C++ ファイルがビジュアル スタジオ内で使用できる C++/CLR ライブラリを設定するにはどうすればよいですか。マネージ C++ クラスをアンマネージ C++ コードで簡単にインスタンス化できれば、残りの作業 (インターフェースやラッピングなど) を解決できると思います。私の主な愚かさは、Visual Studio 内で参照/#includes などを設定しようとすることにあると思いますが、他の誤解がある可能性があることは明らかです。おそらく、この全体に対する答えは、これを支援するチュートリアルまたは指示へのリンクにすぎない可能性があります.
調査:私はグーグルとビンジングを何度も繰り返し、ある程度の成功を収めました。C# コードからアンマネージ ライブラリを使用する方法を示す多くのリンクを見つけました。また、com オブジェクトを使用してそれを行う方法を示すリンクがいくつかあることを認めます。VS 2010 を対象とした結果はあまりありません。
参考文献: 私は多くの投稿を何度も読みました。私は最も関連性の高いものを試してみました。興味をそそられるほど答えに近いものもありますが、私はそれらを機能させることができないようです。キーワード ref の誤用、#include または using ステートメントの欠落、名前空間の誤用、実際に IJW 機能を適切に使用していない、または VSコンパイルを正しく処理する必要があります。私は、自分が動作しなければならないコードを理解して期待している場所にいないような気がします。私はそれを理解できる場所に行きたいと思っています。ランダムに 2 つのリンクを含めますが、現在のヒットポイント レベルではすべてを表示することはできません。
http://www.codeproject.com/Articles/35437/Moving-Data-between-Managed-Code-and-Unmanaged-Cod
これは、C++ から Visual Basic へ、そして C++CLR 経由で戻る双方向で、マネージ コードとアンマネージ コードからコードを呼び出します。もちろん、私は C# に興味があります。 -管理されたコードから管理されていないコードと副