次の方法で共有


方法: 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) アプリケーションを作成するには

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

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

参照

関連項目

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

概念

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

混在アセンブリの初期化

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

その他の技術情報

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