Visual C++에서 공유 C 런타임 구성 요소 재배포

이 문서에서는 Visual C++에서 공유 C 런타임 구성 요소를 재배포하는 방법을 설명합니다.

원래 제품 버전: Visual Studio, .NET Framework
원래 KB 번호: 326922

요약

Microsoft Visual Studio에서 애플리케이션을 빌드하고 애플리케이션에서 CRT(C 런타임 라이브러리)를 사용하는 경우 다음 목록에서 적절한 CRT DLL(동적 링크 라이브러리)을 애플리케이션과 배포합니다.

  • Microsoft Visual C++ 2008년 Msvcr90.dll
  • Microsoft Visual C++ 2005년 Msvcr80.dll
  • Microsoft .NET Framework 1.1을 사용하여 .NET 2003 Microsoft Visual C++ Msvcr71.dll
  • Microsoft .NET Framework 1.0을 사용하여 .NET 2002 Microsoft Visual C++ 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을 사용하는 애플리케이션과 함께 배포합니다. 더 이상 시스템 구성 요소가 아니므로 다른 애플리케이션별 코드를 사용하여 애플리케이션 프로그램 파일 디렉터리에 설치합니다. 이는 애플리케이션이 시스템 경로에 설치될 수 있는 다른 버전의 CRT 라이브러리를 사용하지 못하게 합니다.

Visual C++ .NET 2003 또는 Visual C++ .NET 2002는 개발 시스템의 System32 디렉터리에 CRT DLL을 설치합니다. 개발자의 편의를 위해 설치됩니다. 그렇지 않으면 공유 CRT와 연결되는 Visual C++로 빌드된 모든 프로젝트에는 디버깅 및 실행을 위해 빌드 디렉터리에 DLL 복사본이 필요합니다. Visual C++ 2005 및 Visual C++ 2008은 WINDOWS XP 이상 운영 체제에서 CRT DLL을 Windows 병렬 어셈블리로 설치합니다. Windows 2000은 병렬 어셈블리를 지원하지 않습니다. Windows 2000에서 CRT DLL은 System32 디렉터리에 설치됩니다.

CRT DLL에서 공유 CRT 라이브러리가 필요한 애플리케이션을 배포하는 경우 DLL 파일을 직접 배포하는 대신 Visual C++에 포함된 CRT.msm 병합 모듈을 사용하는 것이 좋습니다.

Windows 병렬 어셈블리

Visual C++ 2005 및 Visual C++ 2008을 사용하는 Msvcr90.dll Msvcr80.dll Windows 2000을 제외한 Windows 병렬 어셈블리로 재배포됩니다. Visual Studio에 포함된 Vcredist_x86.exe 애플리케이션을 실행하여 대상 컴퓨터에 이러한 버전의 CRT를 설치할 수 있습니다. x64 및 IA-64 플랫폼용 설치 관리자도 있습니다. 대신 Visual Studio와 함께 제공되는 CRT msm 병합 모듈을 사용하여 CRT 설치 관리자를 사용자 고유의 설치 애플리케이션에 패키징할 수 있습니다. 지원되는 운영 체제의 디렉터리에 설치되어 있으므로 CRT를 모든 애플리케이션에 \windows\winsxs 공유 어셈블리로 사용할 수 있습니다.

참조