1

基本的に、管理されていない VC++ 静的ライブラリがたくさんあります。そしてそれらを利用したMFCベースのVC++ GUIアプリケーション。目標は、GUI アプリを C# で行うものに置き換えることですが、すべて同じ静的ライブラリを使用します。問題は、これが可能かどうかです。可能であれば、それを達成する正しい方法は何ですか?

提案、誰か?ありがとう。

4

2 に答える 2

2

はい、マネージ C++ コードに C++/CLI を使用することは可能です。C++/CLI WinForms アプリを作成し、通常どおり静的ライブラリにリンクするだけです。

ただし、GUI コードとライブラリの間に多くの密結合がある場合、これは少し厄介になる可能性があります。管理された世界と管理されていない世界の間での一部のデータ型、特に文字列の変換について心配する必要があります。管理対象のオブジェクト/配列を渡す必要がある場合

ウィキペディアには優れた紹介があり、 MSDNには多くのドキュメントがあります。

于 2008-10-07T14:28:49.553 に答える
1

Rob の言うとおりです。完全に C++/CLI で実行できますが、いくつかのネイティブ クラスをマネージ WinForms ユーザー コントロール クラスにラップするのが最も便利であることがわかりました。このマネージド クラスにはネイティブ クラスのインスタンスが含まれ、メソッド呼び出しで文字列などのデータをマーシャリングしただけでなく、ネイティブ コールバック (boost::signal で実装) を .NET イベントに変換しました。このシグナル イベント変換の全体的な解決策は、この質問で詳しく説明されています。.NET WinForms ユーザー コントロールもネイティブ例外をトラップし、マネージ例外として再スローし、.NET 以外のインターフェイス (反復子を返すメソッド) をより .NET スタイルのインターフェイスに変換しました。この質問. その後、WPF アプリケーションで .NET クラスを直接使用できるようになりました。.NET クラスとしてラップする場合、C# から使用するには DLL に入れる必要があることに注意してください。

于 2008-10-07T15:02:34.963 に答える