Visual C++의 개발

개발 컴퓨터 이외의 컴퓨터에서 애플리케이션 설치는 배포라고 합니다. 다른 컴퓨터에 Visual C++ 애플리케이션을 배포할 때는 애플리케이션과 해당 애플리케이션이 종속된 모든 라이브러리 파일을 설치해야 합니다. Visual Studio는 세 가지 방법(중앙 배포, 로컬 배포정적 연결)으로 Visual C++ 라이브러리를 애플리케이션과 함께 배포할 수 있습니다. 중앙 배포는 모든 애플리케이션이 자동으로 액세스할 수 있는 Windows 디렉터리 아래에 라이브러리 파일을 배치합니다. 로컬 배포는 애플리케이션과 같은 디렉터리에 라이브러리 파일을 놓습니다. 로컬 배포된 모든 라이브러리를 직접 다시 배포해 업데이트해야 합니다. 정적 연결은 라이브러리 코드를 애플리케이션에 바인딩합니다. 정적 연결을 사용할 때 라이브러리에 대한 업데이트를 활용하려면 애플리케이션을 다시 컴파일하고 다시 배포해야 합니다.

Visual Studio 2015에서는 Microsoft C 런타임 라이브러리가 버전별 로컬 라이브러리 구성 요소 및 Windows의 새 일부인 새 유니버설 C 런타임 라이브러리에 리팩터링됐습니다. 범용 CRT 배포에 대한 세부 정보는 범용 CRT 배포를 참조하십시오.

중앙 배포

중앙 배포에서는 디렉터리 또는 x64 시스템의 Windows\SysWow64 32비트 라이브러리 파일인 디렉터리에 라이브러리 DLL 파일이 설치 Windows\System32 됩니다. 중앙에서 배포된 라이브러리 파일은 다른 애플리케이션에서 사용할 수 있습니다.

Visual C++ 라이브러리를 중앙에서 배포하려면 설치할 파일에 대한 다음 두 소스 중 하나를 사용할 수 있습니다.

  • 재배포 가능 패키지 파일입니다. 이러한 파일은 압축된 형식의 모든 Visual C++ 재배포 가능 패키지 라이브러리를 포함하는 독립 실행형 명령줄 실행 파일입니다. 최신 재배포 가능 패키지는 Microsoft Visual C++ 재배포 가능 패키지 지원되는 최신 다운로드에서 사용할 수 있습니다. 중앙 배포에 재배포 가능 패키지를 사용하는 경우 Windows 업데이트 라이브러리를 독립적으로 서비스할 수 있습니다.

  • 애플리케이션의 Windows Installer(.msm) 파일에 포함할 수 있는 재배포 가능 병합 모듈(.msi파일)입니다. 이러한 방식으로 배포된 라이브러리는 Windows 업데이트 자동으로 업데이트할 수 없으므로 이 메서드는 더 이상 사용되지 않습니다. 자세한 내용은 병합 모듈을 사용하여 재배포를 참조 하세요.

재배포 가능 패키지 파일은 특정 시스템 아키텍처에 대한 모든 Visual C++ 라이브러리를 설치합니다. 예를 들어 애플리케이션이 x64용으로 빌드된 경우 패키지를 사용하여 애플리케이션에서 vcredist_x64.exe 사용하는 모든 Visual C++ 라이브러리를 설치할 수 있습니다. 애플리케이션을 설치하기 전에 필수 구성 요소로 패키지를 실행하도록 애플리케이션 설치 관리자를 프로그래밍할 수 있습니다.

재배포 가능 패키지를 사용하여 중앙 배포를 사용하면 Windows 업데이트 Visual C++ 라이브러리를 자동으로 업데이트할 수 있습니다. 지속적인 보안 및 기능을 위해 정적 라이브러리 대신 애플리케이션에서 라이브러리 DLL을 사용하고 로컬 배포 대신 재배포 가능 패키지 및 중앙 배포를 사용하는 것이 좋습니다.

로컬 배포

로컬 배포의 경우 라이브러리 파일은 애플리케이션 폴더에 실행 파일과 함께 설치됩니다. 각 버전의 파일 이름에 해당 버전 번호가 포함되어 있으므로 다른 버전의 Visual C++ 재배포 가능 패키지 라이브러리를 동일한 폴더에 설치할 수 있습니다. 예를 들어 C++ 런타임 라이브러리의 버전 12는 msvcp120.dll/>이고 버전 14는 .입니다 msvcp140.dll.

라이브러리에 대한 확장은 점 라이브러리라고 하는 여러 개의 추가 DLL에 분산될 수 있습니다. 예를 들어 Visual Studio 2017 버전 15.6에서 릴리스된 표준 라이브러리의 msvcp140.dll일부 기능이 ABI 호환성을 유지하기 위해 추가msvcp140_1.dll되었습니다. Visual Studio 2017 버전 15.6(도구 집합 14.13) 이상을 사용하는 경우 이러한 점 라이브러리와 기본 라이브러리를 모두 로컬로 배포해야 할 수 있습니다. 이러한 별도의 점 라이브러리는 ABI가 변경되면 결국 기본 라이브러리에 추가됩니다.

Microsoft는 로컬로 배포된 Visual C++ 라이브러리를 자동으로 업데이트할 수 없으므로 이러한 라이브러리의 로컬 배포는 권장하지 않습니다. 재배포 가능 라이브러리의 로컬 배포를 사용하기로 결정한 경우 로컬로 배포된 라이브러리를 자동으로 업데이트하는 고유한 방법을 구현하는 것이 좋습니다.

정적 연결

동적으로 연결된 라이브러리 외에도 Visual Studio는 대부분의 라이브러리를 정적 라이브러리로 제공합니다. 애플리케이션에 정적 라이브러리를 정적으로 연결할 수 있습니다. 즉, 라이브러리 개체 코드를 애플리케이션에 직접 연결할 수 있습니다. 정적 연결은 DLL 종속성 없이 단일 이진 파일을 만들므로 Visual C++ 라이브러리 파일을 별도로 배포할 필요가 없습니다. 그러나 정적으로 연결된 라이브러리는 현재 위치에서 업데이트할 수 없으므로 이 방법은 권장하지 않습니다. 정적 연결을 사용할 때 연결된 라이브러리를 업데이트하려면 애플리케이션을 다시 컴파일하고 다시 배포해야 합니다.

배포 문제 해결

Visual C++ 라이브러리의 로드 순서는 시스템에 따라 다릅니다. 로더 문제를 진단하려면 다음을 사용하거나 where.exe.depends.exe 자세한 내용은 동적 링크 라이브러리 검색 순서(Windows)를 참조하세요.

참고 항목

데스크톱 애플리케이션 배포
범용 CRT 배포