Dela via


Omdistribution av den delade C-körningskomponenten i Visual C++

Den här artikeln beskriver hur du omdistribuerar den delade C-körningskomponenten i Visual C++.

Ursprunglig produktversion: Visual Studio, .NET Framework
Ursprungligt KB-nummer: 326922

Sammanfattning

När du skapar ett program i Microsoft Visual Studio och programmet använder C-körningsbiblioteken (CRT), distribuerar du lämpligt CRT-DLL (Dynamic Link Library) från följande lista med ditt program:

  • Msvcr90.dll för Microsoft Visual C++ 2008
  • Msvcr80.dll för Microsoft Visual C++ 2005
  • Msvcr71.dll för Microsoft Visual C++ .NET 2003 med Microsoft .NET Framework 1.1
  • Msvcr70.dll för Microsoft Visual C++ .NET 2002 med Microsoft .NET Framework 1.0

För Msvcr70.dll eller för Msvcr71.dll bör du installera CRT DLL i katalogen för programfiler. Du får inte installera dessa filer i Windows-systemkatalogerna. För Msvcr80.dll och för Msvcr90.dll bör du installera CRT som Windows sida vid sida-sammansättningar.

DLL-konflikt

Den delade CRT-DLL:en har distribuerats av Microsoft tidigare som en delad systemkomponent. Det kan orsaka problem när du kör program som är länkade till en annan version av CRT på datorer som inte har rätt versioner av CRT DLL installerat. Det kallas ofta för DLL-konfliktproblemet .

För att lösa det här problemet betraktas CRT-DLL inte längre som en systemfil, så att distribuera CRT DLL med alla program som förlitar sig på den. Eftersom det inte längre är en systemkomponent installerar du den i programkatalogen Programfiler med annan programspecifik kod. Vilket hindrar ditt program från att använda andra versioner av CRT-biblioteket som kan installeras på systemsökvägarna.

Visual C++ .NET 2003 eller Visual C++ .NET 2002 installerar CRT DLL i System32-katalogen i ett utvecklingssystem. Vilket är installerat som en bekvämlighet för utvecklaren. Annars kräver alla projekt som har skapats med Visual C++ som länkar till den delade CRT en kopia av DLL:en i byggkatalogen för felsökning och körning. Visual C++ 2005 och Visual C++ 2008 installerar CRT DLL som en Windows-sammansättning sida vid sida i Windows XP och senare operativsystem. Windows 2000 stöder inte sida-vid-sida-sammansättningar. I Windows 2000 installeras CRT DLL i katalogen System32.

När du distribuerar program som kräver det delade CRT-biblioteket i CRT DLL rekommenderar vi att du använder kopplingsmodulen CRT.msm, som ingår i Visual C++ i stället för att distribuera DLL-filen direkt.

Windows sida vid sida-sammansättningar

Msvcr80.dll med Visual C++ 2005 och Msvcr90.dll med Visual C++ 2008 omfördelas som Windows sida vid sida-sammansättningar förutom i Windows 2000. Du kan installera dessa versioner av CRT på måldatorer genom att köra Vcredist_x86.exe program som ingår i Visual Studio. Det finns även installationsprogram för plattformarna x64 och IA-64. I stället kan du använda CRT msm merge-modulen, som medföljer Visual Studio för att paketera CRT-installationsprogrammet i ditt eget installationsprogram. Detta gör CRT tillgängligt som en delad sammansättning för alla program eftersom den är installerad i \windows\winsxs katalogen på operativsystem som stöds.

Referenser