1

C++/CLI がアンマネージ C++ コードを使用する方法であることをつい最近知りました。C++/CLI プロジェクトで C++ プロジェクトからコードを呼び出し、C++ コードがスタティック ライブラリにある方法を理解することができました。C++ コードは静的ライブラリにあり、C++/CLI コードは Win32 アプリケーションにあります。

次に、C++/CLI プロジェクトを静的ライブラリ (以降はラッパーと呼びます) に変換し、ラッパーを呼び出す別の "コンシューマー" プロジェクト (C++/CLI または C#) を作成したいと考えました。これは私が立ち往生している場所です。

C# では、プロジェクトのリンクはとても簡単です。必要なのは、コンシューマ プロジェクトからライブラリ プロジェクトへの参照を追加することだけです。C++/CLI または C# プロジェクトから C++/CLI プロジェクトに移行するにはどうすればよいでしょうか?

さて、それが主な質問です。私の最終的な目標は、DLL または静的ライブラリを使用して、C# から C++/CLI、C++ に自由に移行できるようにすることですが、まず現在の問題を解決する必要があります。

4

1 に答える 1

3

C#では、.libsはC ++固有であるため、C ++ / CLI静的ライブラリ(.lib)への参照を追加することはできません。代わりに、.NETアセンブリ(DLL)にコンパイルされるクラスライブラリプロジェクトとしてC ++/CLIプロジェクトを作成する必要があります。結果のDLLは、C#プロジェクトからの参照として追加できます。

もう1つ、アンマネージC++クラスのラッパーを作成するためにC++/CLIを使用することはお勧めしません。そのような場合は、クラスをCOMクラスに変換することをお勧めします(ATLを使用)。.NETはCOMと下位互換性および上位互換性があるため、ラッパーを作成しなくても、COMクラスをC#から直接使用できます。C ++ / CLIは、マネージコードとアンマネージコードを同じ場所に混在させる必要がある場合に適していますが、ラッパーを作成している場合は、代わりにCOMの使用を検討する必要があります。

于 2013-01-06T02:09:03.940 に答える