方法: CRT ライブラリ DLL との依存関係を削除して部分信頼アプリケーションを作成する

このトピックでは、msvcm90.dll との依存関係を削除することで、Visual C++ を使用して部分信頼の共通言語ランタイム アプリケーションを作成する方法について説明します。

/clr でビルドされた Visual C++ アプリケーションは、C ランタイム ライブラリの一部である msvcm90.dll に依存します。 アプリケーションを部分信頼環境で使用する場合、CLR は DLL に特定のコード アクセス セキュリティ規則を適用します。 このため、この依存関係を削除する必要があります。 msvcm90.dll にネイティブ コードが含まれており、コード アクセス セキュリティ ポリシーを適用できないためです。

アプリケーションが C ランタイム ライブラリの機能を使用せず、コードからこのライブラリの依存関係を削除する場合は、/NODEFAULTLIB:msvcmrt.lib リンカー オプションを使用して、ptrustm.lib または ptrustm.lib とリンクする必要があります。 これらのライブラリには、アプリケーションの初期化と初期化解除中のためのオブジェクト ファイル、初期化コードによって使用される例外クラス、およびマネージド例外処理コードが含まれています。 これらのライブラリのいずれかでリンクすると、msvcm90.dll の依存関係がすべて削除されます。

Note

アセンブリ初期化解除中の順序は、ptrust ライブラリを使用するアプリケーションによって異なる場合があります。 通常のアプリケーションでは、通常、アセンブリは読み込まれた逆の順序でアンロードされますが、これは保証されません。 部分信頼アプリケーションでは、通常、アセンブリは読み込まれた順序と同じ順序でアンロードされます。 これも保証されません。

部分的に信頼された混合 (/clr) アプリケーションを作成するには

  1. msvcm90.dll の依存関係を削除するには、/NODEFAULTLIB:msvcmrt.lib リンカー オプションを使用して、このライブラリをインクルードしないようにリンカーに指定する必要があります。 Visual Studio 開発環境またはプログラムを使用してこれを行う方法については、「/NODEFAULTLIB (ライブラリを無視する)」を参照してください。

  2. リンカー入力の依存関係に、いずれかの ptrustm ライブラリを追加します。 リリース モードでアプリケーションをビルドする場合は、ptrustm.lib を使用します。 デバッグモードの場合は、ptrustmd を使用します。 Visual Studio 開発環境またはプログラムを使用してこれを行う方法については、「リンカー入力としての .Lib ファイル」を参照してください。

関連項目

混在 (ネイティブおよびマネージド) アセンブリ
混在アセンブリの初期化
混在アセンブリのためのライブラリ サポート
/link (リンカーにオプションを渡す)