Share via


如何:移除 CRT 程式庫 DLL 的相依性以建立部分信任的應用程式

本主題討論如何藉由移除 msvcm90.dll 的相依性,使用 Visual C++ 建立部分信任的 Common Language Runtime 應用程式。

使用 /clr 建置的 Visual C++ 應用程式將相依于 msvcm90.dll,這是 C-Runtime 程式庫的一部分。 當您想要將應用程式用於部分信任環境中時,CLR 會在 DLL 上強制執行特定程式碼存取安全性規則。 因此,必須移除此相依性,因為 msvcm90.dll 包含機器碼,且無法對它強制執行程式碼存取安全性原則。

如果您的應用程式未使用 C-Runtime 程式庫的任何功能,而且您想要從程式碼中移除此程式庫的相依性,則必須使用 /NODEFAULTLIB:msvcmrt.lib 連結器選項,並使用 ptrustm.lib 或 ptrustmd.lib 連結。 這些程式庫包含初始化和未初始化應用程式的物件檔、初始化程式碼所使用的例外狀況類別,以及 Managed 例外狀況處理常式代碼。 其中一個程式庫中的連結將會移除 msvcm90.dll 的任何相依性。

注意

使用 ptrust 程式庫的應用程式,元件未初始化的順序可能會有所不同。 對於一般應用程式,元件通常會以載入的反向順序卸載,但這並不保證。 對於部分信任應用程式,元件通常會以載入的相同順序卸載。 這也不保證。

建立部分信任的混合式 (/clr) 應用程式

  1. 若要移除 msvcm90.dll 的相依性,您必須使用 /NODEFAULTLIB:msvcmrt.lib 連結器選項來指定連結器不要包含此程式庫。 如需如何使用 Visual Studio 開發環境或以程式設計方式執行這項操作的資訊,請參閱 /NODEFAULTLIB (忽略程式庫)。

  2. 將其中一個 ptrustm 程式庫新增至連結器輸入相依性。 如果您要以發行模式建置應用程式,請使用 ptrustm.lib。 針對偵錯模式,請使用 ptrustmd.lib。 如需如何使用 Visual Studio 開發環境或以程式設計方式執行這項操作的資訊,請參閱 。Lib 檔案做為連結器輸入

另請參閱

混合 (原生和 Managed) 組件
混合組件的初始化
混合組件的程式庫支援
/link (傳遞選項給連結器)