方法: CRT ライブラリ DLL との依存関係を削除して部分信頼アプリケーションを作成する
ここでは、msvcm90.dll との依存関係を削除することで、Visual C++ を使用して部分信頼の共通言語ランタイム アプリケーションを作成する方法について説明します。
/clr で構築する Visual C++ アプリケーションは、C ランタイム ライブラリの一部である msvcm90.dll との依存関係を持ちます。アプリケーションを部分信頼環境で使用する場合、CLR は特定のコード アクセス セキュリティ規則を DLL に強制的に適用します。msvcm90.dll にはその DLL に強制的に適用できないネイティブ コードとコード アクセス セキュリティ ポリシーが含まれているため、この依存関係を削除する必要があります。
アプリケーションが C ランタイム ライブラリの機能を使用していないときに、このライブラリとの依存関係をコードから削除する場合は、/NODEFAULTLIB:msvcmrt.lib リンカー オプションを使用して、ptrustm.lib または ptrustmd.lib のいずれかとリンクする必要があります。これらのライブラリには、アプリケーションの初期化と初期化解除用のオブジェクト ファイル、初期化コードで使用される例外クラス、およびマネージ例外処理コードが含まれています。これらのいずれかのライブラリにリンクすることで、msvcm90.dll とのすべての依存関係が削除されます。
[!メモ]
アセンブリの初期化解除の順序は、ptrust ライブラリを使用するアプリケーション間で異なる場合があります。標準的なアプリケーションの場合、アセンブリは通常読み込まれた順序とは逆の順序でアンロードされますが、これが保証されるわけではありません。部分信頼アプリケーションの場合、アセンブリは通常読み込まれた順序と同じ順序でアンロードされます。これも保証されるわけではありません。
部分信頼混合 (/clr) アプリケーションを作成するには
msvcm90.dll との依存関係を削除するには、/NODEFAULTLIB:msvcmrt.lib リンカー オプションを使用して、このライブラリを含めないことをリンカーに指定する必要があります。これを Visual Studio 開発環境またはプログラムで実行する方法については、「/NODEFAULTLIB (ライブラリを無視する)」を参照してください。
リンカー入力依存関係にいずれかの ptrustm ライブラリを追加します。リリース モードでアプリケーションを構築する場合は、ptrustm.lib を使用します。デバッグ モードの場合は、ptrustmd.lib を使用します。これを Visual Studio 開発環境またはプログラムで実行する方法については、「リンカー入力としての .lib ファイル」を参照してください。