私はC++/CLIで純粋なアンマネージドVC++ 9プロジェクトをラップして、.NETアプリケーションから明快に使用しています。私はwrappersの書き方を知っている、とアンマネージコードcan be executed from .NETことが、何私はかなりの周り私の頭をラップすることはできません。管理対象C++/CLIプロジェクトからアンマネージC++を正常に実行することはできますか?
管理されていないlibには非常に複雑なC++のライブラリで、インライン化や他の多くを使用しています機能のため、これを
/clr
-markedマネージドDLLにコンパイルすることはできません。私はこれを通常のVC++コンパイラを使って別のDLLにコンパイルする必要があります。このアンマネージドコードからシンボルをエクスポートして、C++/CLIプロジェクトから使用できるようにするにはどうすればよいですか?表示する必要があるすべてのクラスを
extern
とマークしていますか?それは単純か、それとももっと複雑なことはありますか?C++/CLIプロジェクトからエクスポートされたシンボルにアクセスするにはどうすればよいですか?アンマネージドソースコードのヘッダーファイルを単純にインクルードするだけで、C++リンカーはアンマネージDLLから実際のコードを取得しますか?または、DLLのクラスを指す新しいヘッダーファイルに "extern"クラスの別のセットを手書きしなければなりませんか?
私のC++/CLIプロジェクトでアンマネージドクラスが作成されると、アンマネージコードは通常のVC9ランタイムで完全に正常に実行されますか、.NET内で強制的に実行されますか?互換性の問題が増えていますか?
C++プロジェクトでは、多くのインスタンスが作成され、独自のカスタム実装ガベージコレクタが用意されています。すべてがプレーンC++で記述されています。DirectXサウンドレンダラであり、DirectXオブジェクトをたくさん管理します。これらはすべて正常に動作するのでしょうか、Win32のどの機能が何らかの影響を受けますか?
はい、混在モードを実行できます。コンパイルしたいファイルを '/ clr'オプションなしでネイティブとしてマークするだけです。関数レベルでこれを制御するための#pragmaディレクティブがいくつかあります。 – leppie