本文說明如何重新分配 Visual C++ 中的共用 C 執行階段元件。
原始產品版本: Visual Studio、.NET Framework
原始 KB 編號: 326922
摘要
當您在 Microsoft Visual Studio 中建置應用程式,且應用程式使用 C 執行時間連結庫 (CRT),請將適當的 CRT 動態連結庫 (DLL) 從下列清單中散發給您的應用程式:
- 適用於 Microsoft Visual C++ 2008 的 Msvcr90.dll
- 用於 Microsoft Visual C++ 2005 的 Msvcr80.dll
- 適用於 Microsoft .NET Framework 1.1 的 Microsoft Visual C++ .NET 2003 的 Msvcr71.dll
- 適用於 Microsoft .NET Framework 1.0 的 Microsoft Visual C++ .NET 2002 的 Msvcr70.dll
針對 Msvcr70.dll 或 Msvcr71.dll,您應該將 CRT DLL 安裝到您的應用程式程式檔目錄中。 您可能不會將這些檔案安裝到 Windows 系統目錄中。 針對 Msvcr80.dll 和 Msvcr90.dll,您應將 CRT 安裝為 Windows 並行組件。
DLL 衝突
共用的CRT DLL過去已由Microsoft散發為共用的系統元件。 當您在未安裝正確CRT DLL版本的電腦上執行連結至不同CRT版本的應用程式時,可能會造成問題。 通常稱為 DLL 衝突 問題。
為了解決此問題,CRT DLL 不再被視為系統檔案,因此會將CRT DLL散發給任何依賴它的應用程式。 由於它不再是系統元件,因此請將其安裝在您的應用程式 Program Files 目錄中,並搭配其他應用程式特定程序代碼。 這可防止您的應用程式使用其他可能安裝在系統路徑上的 CRT 程式庫版本。
Visual C++ .NET 2003 或 Visual C++ .NET 2002 會在開發系統上的 System32 目錄中安裝 CRT DLL。 安裝這個是為了方便開發人員。 否則,所有以 Visual C++ 所建置且與共用 CRT 連結的專案都需要組建目錄中的 DLL 複本,以進行偵錯和執行。 Visual C++ 2005 和 Visual C++ 2008 會將 CRT DLL 安裝為 Windows XP 和更新版本的作業系統上的 Windows 並存元件。 Windows 2000 不支援並排組件。 在 Windows 2000 上,CRT DLL 會安裝在 System32 目錄中。
當您在CRT DLL中散發需要共用CRT連結庫的應用程式時,建議您使用隨附於Visual C++ 的CRT.msm合併模組,而不是直接散發 DLL 檔案。
Windows 並存組件
Visual C++ 2005 的 Msvcr80.dll 和 Visual C++ 2008 的 Msvcr90.dll 會以 Windows 並行組件重新發佈,但不包括 Windows 2000。 您可以在目標計算機上安裝這些版本的 CRT,方法是執行 Visual Studio 隨附的Vcredist_x86.exe應用程式。 x64 和 IA-64 平臺也有安裝程式。 相反地,您可以使用隨附於 Visual Studio 的 CRT msm 合併模組,將 CRT 安裝程式封裝到您自己的安裝程式應用程式中。 這會讓CRT成為所有應用程式的共用元件,因為它安裝在支援的作業系統上的 \windows\winsxs
目錄中。