.NETアプリからわかりやすく使用するために、純粋なアンマネージドVC++9プロジェクトをC++/CLIでラップしているところです。私はラッパーの書き方を知っており、アンマネージコードは.NETから実行できますが、頭を完全に包み込むことができないものは次のとおりです。
アンマネージライブラリは非常に複雑なC++ライブラリであり、多くのインライン化やその他の機能を使用するため、これをマーク付きの
/clr
マネージDLLにコンパイルすることはできません。通常のVC++コンパイラを使用して、これを別のDLLにコンパイルする必要があります。このアンマネージコードからシンボルをエクスポートして、C ++ / CLIプロジェクトから使用できるようにするにはどうすればよいですか?表示する必要があるすべてのクラスをマークし
extern
ますか?それはそれほど単純ですか、それとももっと複雑ですか?C ++ / CLIプロジェクトからエクスポートされたシンボルにアクセスするにはどうすればよいですか?アンマネージソースコードのヘッダーファイルをインクルードするだけで、C ++リンカーはアンマネージDLLから実際のコードを取得しますか?または、DLL内のクラスを指す新しいヘッダーファイルに「extern」クラスの個別のセットを手書きで書き込む必要がありますか?
私のC++/ CLIプロジェクトがアンマネージクラスを作成するとき、アンマネージコードは通常のVC9ランタイムで完全に正常に実行されますか、それとも.NET内で強制的に実行されますか?より多くの互換性の問題を引き起こしますか?
C ++プロジェクトは、多くのインスタンスを作成し、独自のカスタム実装のガベージコレクターを備えており、すべてプレーンC ++で記述されています。これは、DirectXサウンドレンダラーであり、多くのDirectXオブジェクトを管理します。これはすべて正常に機能しますか、それともそのようなWin32機能は何らかの形で影響を受けますか?