Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokud vytváříte aplikace nebo ovladače pro Windows 10, musíte si přečíst jenom tuto část. Pokud používáte verzi sady Visual Studio starší než Visual Studio 2015, přeskočte tuto část a začněte Redistributing the C Runtime (platí pro před visual Studio 2015).
Počínaje sadou Visual Studio 2015 zahrnuje Modul runtime C (UCRT) modul runtime jazyka C. Ostatní součásti vyžadované pro kompletní program (funkce jazyka C/C++, knihovna C++) poskytuje Visual Studio v distribuovatelném programu VC++. Aby se zabránilo požadavkům na redistribuci modulu runtime, jsou tyto části staticky propojené.
Varování
Pokud při sestavování projektu ovladače uživatelského režimu v sadě Visual Studio nastavíte PlatformToolset na WindowsUserModeDriver10.0
, sada nástrojů ignoruje všechny knihovny modulu runtime zadané v projektu a místo toho propojí staticky s modulem runtime VC++ a dynamicky proti UCRT. Při použití této sady nástrojů nelze toto chování hybridního propojení překonfigurovat.
Pokud sadu nástrojů WindowsUserModeDriver10.0
nepoužíváte, proveďte úpravy pomocí následujícího postupu (například zahrnout jinou knihovnu DLL):
- Nastavení na obecné statické propojení: Vlastnosti > C/C++ > Generování kódu > Knihovna modulu runtime = vícevláknová (/MT)
- Odeberte staticky připojené UCRT: Vlastnosti > Linker > Vstup > Ignorovat konkrétní výchozí knihovny += libucrt.lib
- Přidejte dynamicky propojené UCRT: Vlastnosti > Linker > Input > Additional Dependencies += ucrt.lib, Properties > Linker > Input > Ignore Specific Default Libraries += libucrt.libucrt.lib
Redistribuce běhové knihovny C (platí pro před Visual Studio 2015)
Poznámka:
Všechny informace pod tímto bodem platí pouze pro před-2015. Před 2015mi byly dvě samostatné verze modulu C Runtime: Visual C++ Runtime (VCRT, například msvcr120.dll
) a starší verze Windows CRT (msvcrt.dll
).
Visual Studio nainstaluje nejnovější verzi VCRT do adresáře System32
. Pokud soubor není v tomto umístění, můžete ho zkopírovat přímo do adresáře sestavení projektu Visual C++.
Pokud ovladač uživatelského režimu nebo desktopová aplikace používají VCRT, musíte distribuovat příslušné knihovny dynamického propojení. Použití distribuovatelného balíčku Visual C++ (VCRedist_x86.exe
, VCRedist_x64.exe
, VCRedist_arm.exe
). Zřetězte distribuovatelný balíček s dalšími binárními soubory a distribuovatelný balíček obdrží automatické aktualizace.
Pokud chcete dosáhnout izolace nebo se vyhnout závislosti na balíčku VC++ Redistributable, můžete místo toho použít statické propojení s CRT. I když projekty, které nejsou ovladači, obvykle mohou zkopírovat specifické knihovny DLL pro Visual C/C++ do lokální složky aplikace (kde je aplikace nainstalována), aby se vyhnuly závislosti na redistribuovatelném balíčku VC++, lokální nasazení není vhodné pro ovladač.
Nekopírujte jednotlivé komponenty CRT do System32
místo použití distribuovatelného balíčku. To může způsobit, že CRT nebude automaticky obsluhována a možná může být přepsána.
Pro ovladače tiskárny platí následující zvláštní aspekty:
- Tyto ovladače by měly obsahovat požadované soubory CRT v INF, takže soubory CRT se zkopírují do úložiště ovladačů jako součást balíčku ovladače.
- Ovladače tisku V4 nemůžou pro instalaci použít spoluinstalátor, takže inf musí kopírovat relevantní binární soubory knihovny modulu runtime C/C++ do úložiště ovladačů. Chcete-li to provést, odkazujte na příslušné soubory v [COPY_FILES] části balíčku ovladače.
- Ovladače tisku V3 by neměly pro instalaci používat spoluspouštěné instalační programy, protože se nespouští při připojení prostřednictvím Point and Print. Tyto ovladače by měly odkazovat na příslušné soubory v [COPY_FILES] části balíčku ovladače.
Následuje příklad zahrnutí binárních souborů CRT do [COPY_FILES] oddílu INF:
[COPY_FILES]
;CRT
Msvcr120.dll
; other files
* [SourceDisksFiles]
Msvcr120.dll = 2
; other files
* [SourceDisksNames.amd64]
1 = %Location%,,,
2 = %Location%,,,"amd64"
Pro ovladače UMDF:
- Staticky spojte váš ovladač s CRT, abyste zahrnuli runtime do binárního souboru. V takovém případě není nutné redistribuovat CRT.
Propojení vašeho kódu s knihovnami běhového prostředí C (platí pro verze před Visual Studio 2015)
Chcete-li zjistit, které knihovny DLL musíte distribuovat s vaší aplikací, shromážděte seznam knihoven DLL, na kterých vaše aplikace závisí. Jedním ze způsobů, jak tento seznam shromáždit, je spustit Dependency Walker (depends.exe
).
Další informace naleznete v tématu Určení knihoven DLL k redistribuci a Volba metody nasazení.
Nelze distribuovat všechny soubory, které jsou součástí sady Visual Studio; Smíte distribuovat pouze soubory zadané v Redistributable Code for Visual Studio 2013 Preview a Visual Studio 2013 SDK Preview. Ladicí verze aplikací a různé dynamické knihovny Visual C++ nejsou redistribuovatelné.
Následující knihovny obsahují funkce knihovny runtime jazyka C:
termín | Popis |
---|---|
Msvcr120.dll | Modul runtime jazyka C |
Msvcp120.dll | Rozhraní runtime C++ |
Msvcr120d.dll | Ladicí verze modulu runtime pro C – redistribuce není povolena. |
Msvcp120d.dll | Ladicí verze modulu runtime C++ – redistribuce není povolena |