Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft C Runtime Library (CRT) omstrukturerades i Visual Studio 2015. Standard C-biblioteket, POSIX-tilläggen och Microsoft-specifika funktioner, makron och globala variabler flyttades till ett nytt bibliotek, Universal C Runtime Library (Universal CRT eller UCRT). Kompilatorspecifika komponenter i CRT flyttades till ett nytt vcruntime-bibliotek.
UCRT är nu en Windows-komponent och levereras som en del av Windows 10 och senare. UCRT stöder en stabil ABI baserat på C-anropskonventioner och överensstämmer nära ISO C99-standarden, med bara några få undantag. Den är inte längre kopplad till en specifik version av kompilatorn. Du kan använda UCRT på valfri version av Windows som stöds av Visual Studio 2015 eller Visual Studio 2017. Fördelen är att du inte längre behöver uppdatera dina versioner för att rikta in dig på en ny version av CRT med varje uppgradering av Visual Studio.
Den här refaktorindelningen har ändrat namn eller platser för många CRT-huvudfiler, biblioteksfiler och omdistribuerbara filer samt de distributionsmetoder som krävs för koden. Många funktioner och makron i UCRT har också lagts till eller ändrats för att förbättra standardefterlevnad. Om du vill dra nytta av dessa ändringar måste du uppdatera dina befintliga kod- och projektversionssystem.
Var du hittar Universal CRT-filerna
Som En Windows-komponent är UCRT-biblioteksfilerna och rubrikerna nu en del av Windows Software Development Kit (SDK). När du installerar Visual Studio installeras även de delar av Windows SDK som krävs för att använda UCRT. Installationsprogrammet för Visual Studio lägger till platserna för UCRT-huvuden, bibliotek och DLL-filer till standardsökvägarna som används av Visual Studio-projektverktyget. När du uppdaterar dina Visual Studio C++-projekt, om de använder standardprojektinställningarna, hittar IDE automatiskt de nya platserna för huvudfiler. Och linkern använder automatiskt de nya standardbiblioteken UCRT och vcruntime. Om du använder en utvecklarens kommandotolk för att göra kommandoradsbyggen, uppdateras miljövariablerna som innehåller sökvägar för huvudfiler och bibliotek och fungerar automatiskt.
Huvudfilerna för Standard C-biblioteket finns nu i Windows SDK i en inkluderingsmapp i en SDK-versionsspecifik katalog. En typisk plats för huvudfilerna finns i katalogen Programfiler eller Programfiler (x86) under Windows Kits\10\Include\[sdk-version]\ucrt, där [sdk-version] motsvarar en Windows-version eller uppdatering, till exempel 10.0.14393.0 för Anniversary Update of Windows 10.
UCRT-statiska bibliotek och stub-bibliotek för dynamisk länk finns i katalogen Programfiler eller Programfiler (x86) under Windows Kits\10\Lib\[sdk-version]\ucrt\[architecture], där architecture är ARM64, x86 eller X64. De statiska biblioteken för release och felsökning är libucrt.lib och libucrtd.lib, och biblioteken för UCRT DLL:er är ucrt.lib och ucrtd.lib.
Återförsäljar- och felsöknings-UCRT-DLL:er finns på separata platser. Detaljhandels-DLL:er är omdistribuerbara filer och finns i katalogen Programfiler eller Programfiler (x86) under Windows Kits\10\Redist\ucrt\DLLs\[architecture]\. Felsökning av UCRT-bibliotek är inte omdistribuerbara filer och finns i katalogen Programfiler eller Programfiler (x86) under Windows Kits\10\bin\[architecture]\ucrt mappen.
Var du hittar standardbiblioteken och rubrikerna
C- och C++-kompilatorns specifika stödbibliotek för vcruntimekörning innehåller den kod som krävs för att stödja programstart och funktioner som undantagshantering och inbyggda funktioner. Biblioteket och dess huvudfiler finns fortfarande i den versionsspecifika Microsoft Visual Studio-mappen i katalogen programfiler eller programfiler (x86).
I Visual Studio 2017, 2019 och 2022 finns huvudfilerna under Microsoft Visual Studio\[year]\[edition]\VC\Tools\MSVC\[lib-version]\include.
[year] är versionen av Visual Studio, [edition] är utgåvan eller smeknamnet för Visual Studio och [lib-version] är byggversionen av biblioteken.
Länkbiblioteken finns under Microsoft Visual Studio\[year]\[edition]\VC\Tools\MSVC\[lib-version]\lib\[architecture], där [year] är versionen av Visual Studio, [edition] är utgåvan eller smeknamnet för Visual Studio, [lib-version] är versionsversionen av biblioteken och [architecture] är målprocessorarkitekturen. Länkbibliotek för OneCore och Store finns också i biblioteksmappen.
Återförsäljnings- och felsökningsversionerna av det statiska biblioteket är libvcruntime.lib och libvcruntimed.lib. Biblioteken för dynamisk länk för distribuerings- och felsökningsstubbar är vcruntime.lib respektive vcruntimed.lib.
När du uppdaterar dina Visual Studio C++-projekt, om du har angett projektets Linker-egenskapIgnorera alla standardbibliotek till Ja, eller om du använder /NODEFAULTLIB länkalternativet på kommandoraden, måste du uppdatera listan med bibliotek så att de nya, omstrukturerade biblioteken inkluderas. Ersätt det gamla CRT-biblioteket, libcmt.libtill exempel , libcmtd.lib, msvcrt.libeller msvcrtd.lib, med motsvarande omstrukturerade bibliotek. Information om de specifika bibliotek som ska användas finns i CRT-biblioteksfunktioner.
Distribution och omdistribution av universell CRT
Eftersom UCRT nu är en Microsoft Windows-operativsystemkomponent ingår den som en del av operativsystemet i Windows 10 och senare. Den är tillgänglig via Windows Update för äldre operativsystem, Windows Vista via Windows 8.1. En redistributerbar version är tillgänglig för Windows XP. Som operativsystemkomponent hanteras UCRT-uppdateringar och service av Windows Update oberoende av Visual Studio- och Microsoft C++-kompilatorversioner. Eftersom UCRT är en Windows-komponent, för säkerhet, enkla uppdateringar och en mindre avbildningsstorlek, rekommenderar vi starkt att du använder det omdistribuerbara paketet för att utföra en central distribution av UCRT för din app.
Du kan använda UCRT på valfri version av Windows som stöds av Visual Studio 2015 eller senare. Du kan omdistribuera det med hjälp av ett vcredist paket för versioner av Windows som stöds före Windows 10. Paketen vcredist innehåller UCRT-komponenterna och installerar dem automatiskt på Windows-operativsystem som inte har dem installerade som standard. Mer information finns i Omdistribuera Visual C++-filer.
Applokal distribution av UCRT stöds, men rekommenderas inte av både prestanda- och säkerhetsskäl. DLL:er för applokal distribution av UCRT ingår som en del av Windows SDK, under underkatalogen redist . De DLL:er som krävs inkluderar ucrtbase.dll och en uppsättning APISet-vidarebefordrar-DLL :er med namnet api-ms-win-[subset].dll. Den uppsättning DLL:er som krävs för varje operativsystem varierar, så vi rekommenderar att du inkluderar alla DLL:er när du använder applokal distribution. Mer information och rekommendationer om applokal distribution finns i Distribution i Visual C++.
Ändringar i universella CRT-funktioner och makron
Många funktioner har lagts till eller uppdaterats i UCRT för att förbättra ISO C99-överensstämmelsen och för att åtgärda kodkvalitet och säkerhetsproblem. I vissa fall krävdes det oförenliga ändringar i biblioteket. Koden som kompilerades korrekt när du använder en äldre version av CRT kan brytas när du kompilerar den med hjälp av UCRT. I så fall måste du ändra koden för att dra nytta av UCRT-uppdateringar och funktioner. En detaljerad lista över icke-bakåtkompatibla ändringar och uppdateringar av CRT som finns i universal-CRT finns i avsnittet C Runtime Library (CRT) i Visual C++-ändringshistoriken. Den innehåller en lista över berörda huvuden och funktioner som du kan använda för att identifiera de ändringar som behövs i koden.
Se även
Visual C++-portning och uppgraderingsguide
Översikt över potentiella uppgraderingsproblem (Visual C++)
Uppgradera projekt från tidigare versioner av Visual C++
Visual C++ ändringshistorik 2003 – 2015
förbättringar av C++-överensstämmelse i Visual Studio