Dela via


Distribution i Visual C++

Installation av programmet på en annan dator än utvecklingsdatorn kallas distribution. När du distribuerar ett Visual C++-program till en annan dator måste du installera både programmet och eventuella biblioteksfiler som det är beroende av. Visual Studio möjliggör tre sätt att distribuera Visual C++-biblioteken tillsammans med ditt program: central distribution, lokal distribution och statisk länkning. Central distribution placerar biblioteksfilerna under Windows-katalogen, där alla program kan komma åt dem automatiskt. Lokal distribution placerar biblioteksfilerna i samma katalog som ditt program. Du måste distribuera om alla lokalt distribuerade bibliotek själv för att uppdatera dem. Statisk länkning binder bibliotekskoden till ditt program. Du måste omkompilera och distribuera om programmet för att kunna dra nytta av eventuella uppdateringar av biblioteken när du använder statisk länkning.

I Visual Studio 2015 omstrukturerades Microsoft C Runtime-biblioteket till versionsspecifika lokala bibliotekskomponenter och ett nytt Universal C Runtime-bibliotek som nu ingår i Windows. Mer information om distribution av universal-CRT finns i Universell CRT-distribution.

Central distribution

I den centrala distributionen installeras DLL-biblioteksfiler i Windows\System32 katalogen eller för 32-bitars biblioteksfiler på x64-system, Windows\SysWow64 katalogen. Centralt distribuerade biblioteksfiler är tillgängliga för andra program.

Om du vill distribuera Visual C++-bibliotek centralt kan du använda en av dessa två källor för att installera filerna:

  • Omdistribuerbara paketfiler . De här filerna är fristående körbara kommandoradsfiler som innehåller alla Visual C++ Redistributable-bibliotek i komprimerad form. De senaste omdistribuerbara paketen är tillgängliga från Microsoft Visual C++ Redistributable Latest Supported Downloads. När du använder de omdistribuerbara paketen för central distribution kan Windows Update betjäna biblioteken oberoende av varandra.

  • Omdistribuerbara sammanslagningsmoduler (.msm filer), som du kan inkludera i programmets Windows Installer-fil (.msi). Den här metoden är inaktuell eftersom bibliotek som distribueras på det här sättet inte kan uppdateras automatiskt av Windows Update. Mer information finns i Omdistribuering med hjälp av sammanslagningsmoduler.

En omdistribuerbar paketfil installerar alla Visual C++-bibliotek för en viss systemarkitektur. Om ditt program till exempel har skapats för x64 kan du använda vcredist_x64.exe paketet för att installera alla Visual C++-bibliotek som programmet använder. Du kan programmera programinstallationsprogrammet att köra paketet som en förutsättning innan du installerar programmet.

Med central distribution med hjälp av ett omdistribuerbart paket kan Windows Update automatiskt uppdatera Visual C++-biblioteken. För fortsatt säkerhet och funktioner rekommenderar vi att du använder biblioteks-DLL:er i ditt program i stället för statiska bibliotek och använder omdistribuerbara paket och central distribution i stället för lokal distribution.

Lokal distribution

I lokal installation installeras biblioteksfiler i programmappen tillsammans med den körbara filen. Olika versioner av Visual C++ Redistributable-bibliotek kan installeras i samma mapp eftersom filnamnet för varje version innehåller dess versionsnummer. Version 12 av C++-körningsbiblioteket är msvcp120.dlltill exempel och version 14 är msvcp140.dll.

Expansioner till ett bibliotek kan spridas över flera extra DLL:er, så kallade punktbibliotek. Vissa funktioner i standardbiblioteket som släpptes i Visual Studio 2017 version 15.6 lades till i msvcp140_1.dllför att bevara ABI-kompatibiliteten msvcp140.dllför . Om du använder Visual Studio 2017 version 15.6 (verktygsuppsättning 14.13) eller senare kan du behöva distribuera både dessa punktbibliotek och huvudbiblioteket lokalt. Dessa separata punktbibliotek läggs så småningom till i basbiblioteket när ABI ändras.

Eftersom Microsoft inte automatiskt kan uppdatera lokalt distribuerade Visual C++-bibliotek rekommenderar vi inte lokal distribution av dessa bibliotek. Om du bestämmer dig för att använda lokal distribution av biblioteken som kan distribueras om rekommenderar vi att du implementerar din egen metod för att automatiskt uppdatera de lokalt distribuerade biblioteken.

Statisk länkning

Förutom dynamiskt länkade bibliotek tillhandahåller Visual Studio de flesta av sina bibliotek som statiska bibliotek. Du kan statiskt länka ett statiskt bibliotek till ditt program, d.v.s. länka biblioteksobjektkoden direkt till programmet. Statisk länkning skapar en enda binär fil utan DLL-beroende, så att du inte behöver distribuera Visual C++-biblioteksfilerna separat. Vi rekommenderar dock inte den här metoden eftersom statiskt länkade bibliotek inte kan uppdateras på plats. Om du vill uppdatera ett länkat bibliotek när du använder statisk länkning måste du kompilera om och distribuera om programmet.

Felsöka distributionsproblem

Inläsningsordningen för Visual C++-bibliotek är systemberoende. För att diagnostisera problem med inläsaren, använd depends.exe eller where.exe. Mer information finns i Sökordning för dynamiskt länkbibliotek (Windows).

Se även

Distribuera skrivbordsapplikationer
Universell CRT-distribution