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

更新 : 2007 年 11 月

ここでは、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 とのすべての依存関係が削除されます。

ms235238.alert_note(ja-jp,VS.90).gifメモ :

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

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

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

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

参照

概念

混在 (ネイティブおよびマネージ) アセンブリ

混在アセンブリの初期化

混在アセンブリのためのライブラリ サポート

参照

/link (リンカにオプションを渡す)

その他の技術情報

ネイティブ コードと .NET Framework コードのセキュリティ