2

以前は、C++ (および MFC) で記述された同じエンジンを呼び出す必要がある MFC (VC6)、VB6、および C# アプリケーションのソフトウェアがありました。エンジンは速度のために C++ を必要としました。当時、3 つすべてがマーシャリングなどの問題を最小限に抑えて COM を使用できるため、インターフェイスとして COM を使用することにしました。

私たちの MFC アプリケーションは現在非推奨であり、最近 VB6 をダンプすることを決定したため、残っているのは C# です。

COM エンジンをそのままにしておくこともできますが、COM 登録などから離れて、管理されたインターフェイスを操作できるようにするとよいでしょう。COM 登録は、ユーザーのマシンに問題がある場合、サポートの問題を引き起こすことがあります。

既存のアンマネージ C++/MFC と .NET フロント エンド インターフェイスを備えた dll を持つことは可能ですか?

4

2 に答える 2

3

内部で MFC クラスを使用する C++/CLI DLL を使用できます。C++/CLI を使用した混合モード DLL 作成の利点の 1 つは、ネイティブ C++ を DLL 内のどこでも (C++/CLI ルールに従って) 使用でき、"そのまま動作する" ことです。

ただし、ここでの目標は、C# アプリケーションから呼び出すことができる、適切でクリーンなマネージド ラッパーを提供することです。

そうは言っても、ほとんどの場合、ユーザー インターフェイス要素に MFC を使用することは避けたいと思うでしょう。MFC コンテンツを C# でホストすることも、その逆も可能ですが、多くの場合問題があります。C++/CLI を使用して、C++ エンジン (タイム クリティカルな操作) とレガシ コードを適切でクリーンなマネージド ラッパーにカプセル化する方がよいでしょう。

于 2010-06-10T22:20:13.973 に答える
0

C++/CLI は両方を実行できます。

于 2010-06-10T22:19:13.790 に答える