D3DImage チュートリアル ② 混合アセンブリへの変換
DirectX Sample Browserからインストールしたアンマネージ プロジェクトにC++/CLIを使ってラッパーを追加して、ネイティブ アセンブリを混合アセンブリに変換します。
プロパティ設定
前回作成したD3DImageTutorial.slnを開き、[ソリューション エクスプローラー]から[D3DRenderer]プロジェクトを右クリックし[プロパティ]を選択します。
プロパティ ページ ダイアログが開くので、プラットフォームが[アクティブ(Win32)]となっていることを確認してから、左上の[構成]を[すべての構成]にして、[構成の種類]を[ダイナミック ライブラリ(.dll)]に、[共通言語ランタイム サポート]を[共通言語ランタイム サポート(/clr)]に変更します。
次に、プロパティ ページの[構成プロパティ]→[C/C++]を開き、[コード生成]を選びます。[ランタイム ライブラリ]を[マルチスレッド デバッグ DLL(/MDd)]に変更します。
次に、[構成プロパティ]→[リンカ]→[全般]を選び、[出力ファイル]を<親またはプロジェクトの既定値から継承>に変更して、[適用]をクリックします。ソリューション エクスプローラーのD3DRendererを右クリックして、[プロジェクトのみ]→[D3DRendererのみリビルド]を選んでリビルドしてください。出力フォルダにD3DRenderer.dllが出力されているはずです。このときD3DRenderer.exeが残っているときは、そのフォルダのファイルをすべて削除して、再度ビルドしてください。
最後に、マニフェスト設定を変更します。[構成プロパティ]→[リンカ]→[マニフェスト ファイル]を開き、[マニフェストの生成]を[はい]に変更します。[構成プロパティ]→[マニフェスト ツール]で[入力と出力]を選び、[埋め込みマニフェスト]を[はい]に変更し、[適用]をクリックします。
D3DRendererプロジェクトに2つの新しい項目、D3DRenderer.hとD3DWrapper.cppを追加します。D3DRendererプロジェクトを右クリックして[追加]→[新しい項目]を選び、カテゴリで[コード]を選び、それぞれ[C++ファイル(.cpp)]と[ヘッダーファイル(.h)]を選んで追加してください。D3DRendererプロジェクトにあるdirectx.ico, D3DRenderer.rc, resource.hを右クリックして、[プロジェクトから除外]を選んでください。D3DRendererプロジェクトにはD3DWrapper.cppとD3DRenderer.cppとD3DRenderer.hとD3DRenderer.manifestの4つが残ります。
D3DRenderer.manifest
最後に、C++/CLIが使えるように、マニフェストファイルD3DRenderer.manifestの内容を以下のように変更します。
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1'
manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32'
name='Microsoft.VC90.DebugCRT'
version='9.0.21022.8'
processorArchitecture='x86'
ublicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>
つづく