- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 Windows 환경에서 Visual C++ 재배포 가능 패키지 충돌로 인한 side-by-side 구성 오류, DLL 누락 오류, 런타임 오류 등을 체계적으로 진단하고 안전하게 해결하는 실무 절차를 정리하는 것이다.
1. Visual C++ 재배포 가능 패키지 개념 이해하기
Microsoft Visual C++ 재배포 가능 패키지는 C/C++로 개발된 프로그램이 공통으로 사용하는 런타임 라이브러리를 Windows에 설치하는 패키지이다.
많은 상용 프로그램과 게임, CAD, 그래픽, 사무용 프로그램이 Visual C++ 런타임에 의존하기 때문에, 운영체제에는 2005, 2008, 2010, 2012, 2013, 2015–2022 등 여러 연도와 버전의 재배포 가능 패키지가 나란히 설치되는 것이 정상이다.
각 버전은 서로 다른 런타임 DLL(MSVCP***.dll, MSVCR***.dll 등)을 제공하며, 프로그램은 자신이 빌드될 때 사용한 런타임 버전을 요구한다.
따라서 예를 들어 Visual C++ 2015 런타임으로 빌드된 프로그램은 2015–2022 패키지를 필요로 하고, Visual C++ 2010으로 빌드된 프로그램은 2010 패키지를 필요로 한다.
이러한 구조 때문에 여러 버전이 동시에 설치되어 있어도 설계 상으로는 충돌하지 않고 side-by-side(나란히) 공존하도록 설계되어 있다.
| 연도/버전 | 예시 패키지 이름 | 대표 DLL 예시 | 비고 |
|---|---|---|---|
| 2005 | Microsoft Visual C++ 2005 Redistributable | MSVCR80.dll | 구형 업무용 프로그램에서 사용되는 경우가 많다. |
| 2008 | Microsoft Visual C++ 2008 Redistributable | MSVCR90.dll | 오래된 상용 소프트웨어·드라이버에서 사용된다. |
| 2010 | Microsoft Visual C++ 2010 Redistributable | MSVCR100.dll | Win7 시대 프로그램에서 자주 사용된다. |
| 2012 | Microsoft Visual C++ 2012 Redistributable | MSVCR110.dll | 일부 기업용 솔루션과 도구에서 사용된다. |
| 2013 | Microsoft Visual C++ 2013 Redistributable | MSVCR120.dll | 구버전 게임·툴에서 종종 필요하다. |
| 2015–2022 | Microsoft Visual C++ 2015–2022 Redistributable | MSVCP140.dll, VCRUNTIME140.dll | 최근 소프트웨어·게임에서 가장 많이 요구된다. |
2. 충돌처럼 보이는 대표적인 오류 증상 정리
Visual C++ 재배포 가능 패키지와 관련된 오류는 대부분 실제 “버전 충돌”이 아니라 손상, 누락, 잘못된 제거, 비공식 DLL 교체 등으로 인한 것이다.
실무에서 자주 등장하는 메시지는 다음과 같다.
- “응용 프로그램을 시작하지 못했습니다. side-by-side 구성 오류 때문에 응용 프로그램을 시작하지 못했습니다.”
- “The application has failed to start because its side-by-side configuration is incorrect.”
- “MSVCP140.dll을(를) 찾을 수 없기 때문에 코드 실행을 진행할 수 없습니다.”
- “VCRUNTIME140.dll이(가) 없어 프로그램을 시작할 수 없습니다.”
- Visual C++ 재배포 가능 패키지 설치 도중 오류 코드와 함께 설치 실패 메시지가 나타나는 경우이다.
이러한 오류는 대부분 다음 네 가지 축으로 정리된다.
- 특정 Visual C++ 패키지 자체가 설치되지 않았거나 중간에 손상된 경우이다.
- 설치는 되어 있지만 잘못된 DLL 버전 또는 비공식 DLL이 덮어써진 경우이다.
- 해당 프로그램이 요구하는 매니페스트(구성 파일)가 잘못되어 side-by-side 로딩에 실패하는 경우이다.
- Windows 시스템 파일이나 컴포넌트 저장소 자체가 손상된 경우이다.
3. 실제 충돌이 발생하는 경우와 발생하지 않는 경우
여러 버전의 Visual C++ 재배포 가능 패키지가 동시에 설치되어 있다고 해서 바로 충돌이 발생하는 것은 아니다.
Windows의 side-by-side 구성은 각 프로그램이 요구하는 정확한 버전의 런타임을 병렬로 설치하고 로딩하도록 설계되어 있다.
실제 문제가 되는 경우는 다음과 같은 상황이다.
| 원인 | 설명 | 대표 증상 |
|---|---|---|
| 임의 삭제 | “정리”를 위해 오래된 Visual C++ 버전을 모두 삭제한 경우이다. | 해당 버전에 의존하던 프로그램이 실행 시 즉시 오류를 내고 종료한다. |
| 설치 손상 | 설치 중 강제 종료, 전원 차단, 디스크 오류 등으로 레지스트리 또는 파일이 불완전해진 경우이다. | 재배포 가능 패키지 설치·제거·수리가 모두 실패하거나, 프로그램이 간헐적으로 오류를 낸다. |
| 비공식 DLL 교체 | 인터넷에서 DLL 파일만 별도 다운로드하여 System32에 덮어쓴 경우이다. | DLL은 존재하지만 버전이 맞지 않아 런타임 오류가 계속 발생한다. |
| 매니페스트 불일치 | 개발사가 잘못된 매니페스트를 포함하여 잘못된 버전의 런타임을 요구하는 경우이다. | 잠시 실행되는 것처럼 보이다가 side-by-side 구성 오류 메시지가 나타난다. |
| 시스템 손상 | Windows 컴포넌트 저장소나 시스템 파일이 손상된 경우이다. | 여러 프로그램에서 비슷한 오류가 동시에 발생하며, Windows 업데이트나 다른 기능에도 문제가 발생한다. |
4. 이벤트 뷰어로 문제 패키지 정확히 찾기
side-by-side 구성 오류가 발생하면 가장 먼저 이벤트 뷰어에서 어떤 컴포넌트가 문제인지 확인하는 것이 좋다.
- Windows 키를 눌러 “이벤트 뷰어”를 검색하여 실행한다.
- 왼쪽 메뉴에서 Windows 로그 → 응용 프로그램을 선택한다.
- 오른쪽에서 “SideBySide” 또는 해당 프로그램 이름으로 표시된 오류 항목을 찾는다.
- 오류 항목을 더블클릭하고 “일반” 및 “자세한 정보” 탭을 확인한다.
- 메시지 내용에 “Microsoft.VC90.CRT”, “Microsoft.VC140.CRT” 등 특정 CRT 버전이나 필요한 manifest 경로가 표시되는지 확인한다.
- 메시지에 표시된 버전을 기준으로 어느 연도·버전의 Visual C++ 재배포 가능 패키지가 필요한지 역추적한다.
이 과정에서 어떤 DLL이나 어떤 버전이 필요한지 알 수 있다면, 해당 버전 패키지만 집중적으로 수리 또는 재설치하면 된다.
5. 설치된 Visual C++ 재배포 가능 패키지 수리(Repair) 절차
Windows 10·11에서는 많은 버전의 Visual C++ 재배포 가능 패키지가 “수정(Modify)” 기능을 통해 손상된 파일을 복구할 수 있다.
- 설정 → 앱 → 설치된 앱(또는 앱 및 기능) 화면을 연다.
- 검색창에 “Microsoft Visual C++”를 입력하여 관련 패키지를 모두 표시한다.
- 가장 최신 연도(예: 2015–2022, 2013, 2012 등)부터 하나씩 선택한다.
- 항목을 클릭하거나 점 메뉴를 열어 수정 또는 변경을 선택한다.
- 나타나는 설치 관리자에서 Repair(복구)를 선택하고 안내에 따라 진행한다.
- 동일 연도의 x86, x64가 모두 있다면 두 아키텍처에 대해 각각 복구를 수행한다.
- 2012 이상 버전에 대해 최신 버전에서 예전 버전 순서로 반복 수행한 뒤 시스템을 재부팅한다.
간단한 손상이나 누락은 이 복구 기능만으로 해결되는 경우가 많으므로, 임의 삭제나 전면 재설치를 시도하기 전에 반드시 먼저 수행하는 것이 좋다.
6. 전면 재설치가 필요한 경우: 안전한 제거·재설치 순서
복구 기능으로 해결되지 않거나, 설치 자체가 꼬여서 제거도 제대로 되지 않는 경우에는 전면 재설치를 고려해야 한다.
6-1. 현재 설치된 버전 목록 백업
- 설정 → 앱 → 설치된 앱 또는 제어판 → 프로그램 및 기능을 열고 “Microsoft Visual C++” 항목만 보이도록 필터링한다.
- 화면을 캡처하거나 설치된 연도·버전·아키텍처(x86/x64)를 목록으로 적어둔다.
- 당장 사용하지 않는 아주 오래된 프로그램이라도, 아직 사용 중일 수 있으므로 목록을 남겨 두어야 한다.
6-2. Visual C++ 재배포 가능 패키지 제거
- 목록화한 항목을 기준으로 연도 순서와 상관없이 하나씩 제거한다.
- 제거 도중 오류가 발생하면 오류 코드·메시지를 기록해 두고, 해당 버전만 따로 다시 설치 후 제거를 재시도한다.
- 모든 Visual C++ 재배포 가능 패키지 제거를 마쳤다면 시스템을 재부팅한다.
6-3. 공식 설치 파일로 재설치
- Microsoft 공식 사이트에서 각 연도·버전의 Visual C++ 재배포 가능 패키지 설치 파일을 내려받는다.
- 64비트 Windows라면 각 연도에 대해 x86, x64 두 아키텍처를 모두 설치하는 것이 안전하다.
- 실제 사용 기록이 있는 연도·버전만 설치해도 되지만, 실무에서는 2008, 2010, 2012, 2013, 2015–2022 정도는 대부분 설치해 두는 경우가 많다.
- 설치를 모두 마친 뒤 시스템을 재부팅하고, 문제가 발생했던 프로그램을 다시 실행해 본다.
7. DLL 누락·버전 불일치 오류 진단과 매핑 표
MSVCP, VCRUNTIME 계열 DLL 누락 오류는 대부분 특정 연도·버전의 Visual C++ 재배포 가능 패키지와 매핑된다.
아래 표는 대표적인 DLL 이름과 필요한 패키지 버전을 정리한 것이다.
| 오류에 표시되는 DLL | 주요 대응 패키지 | 설명 |
|---|---|---|
| MSVCR80.dll, MSVCP80.dll | Visual C++ 2005 Redistributable | 아주 오래된 프로그램에서 발생하는 경우가 많다. |
| MSVCR90.dll, MSVCP90.dll | Visual C++ 2008 Redistributable | 구형 툴·드라이버에서 자주 보이는 조합이다. |
| MSVCR100.dll, MSVCP100.dll | Visual C++ 2010 Redistributable | Win7 시절 개발된 프로그램에서 흔하다. |
| MSVCR110.dll, MSVCP110.dll | Visual C++ 2012 Redistributable | 일부 상용 기업 솔루션에서 요구한다. |
| MSVCR120.dll, MSVCP120.dll | Visual C++ 2013 Redistributable | 인스톨러나 런처 프로그램에서 자주 사용된다. |
| MSVCP140.dll, VCRUNTIME140.dll, VCRUNTIME140_1.dll | Visual C++ 2015–2022 Redistributable | 최근 게임·그래픽·업무용 프로그램에서 가장 많이 사용된다. |
특정 DLL 누락 메시지가 보이면 위 표를 참고하여 해당 버전 패키지를 우선적으로 복구 또는 재설치하는 것이 효율적이다.
8. 시스템 파일 손상 여부 점검(SFC, DISM)으로 근본 원인 제거
여러 프로그램에서 비슷한 side-by-side 구성 오류나 런타임 오류가 반복된다면, Visual C++ 패키지 문제가 아니라 Windows 자체 컴포넌트 손상일 가능성이 있다.
이 경우에는 관리자 권한 명령 프롬프트에서 DISM과 SFC를 순서대로 실행하는 것이 좋다.
DISM /Online /Cleanup-Image /ScanHealth DISM /Online /Cleanup-Image /CheckHealth DISM /Online /Cleanup-Image /RestoreHealth sfc /scannow - 시작 메뉴에서 “cmd”를 검색하고 관리자 권한으로 실행한다.
- 위 명령어를 순서대로 입력하고 각 단계가 완료될 때까지 기다린다.
- 모든 작업이 끝나면 PC를 재부팅한다.
- 그 후 Visual C++ 재배포 가능 패키지 복구 또는 재설치를 다시 시도한다.
DISM이 컴포넌트 저장소를 복구하고, SFC가 시스템 파일을 검증·복구하기 때문에 런타임 설치·실행에 영향을 주는 시스템 손상을 상당 부분 정리할 수 있다.
9. 개발 환경에서의 Visual C++ 의존성 충돌 경고(참고)
개발자가 Visual Studio에서 빌드할 때 “동일한 종속 어셈블리의 서로 다른 버전 간 충돌이 발견되었다”는 경고가 뜨는 경우가 있다.
이는 보통 NuGet 패키지나 참조 DLL 간 버전이 뒤섞이면서 생기는 문제이며, 배포 패키지 설치 충돌과는 성격이 다르다.
이 경우에는 다음과 같이 정리하는 것이 일반적이다.
- 프로젝트에서 사용하지 않는 참조와 NuGet 패키지를 정리한다.
- 모든 프로젝트가 동일한 버전의 패키지를 사용하도록 업데이트하거나 통일한다.
- 필요 시 .config 파일에서 바인딩 리다이렉션(bindingRedirect)을 명시적으로 설정한다.
- 클린 빌드 후 경고 메시지가 사라지는지 확인한다.
이 내용은 최종 사용자 PC에서 발생하는 Visual C++ 재배포 가능 패키지 설치 충돌과 직접적으로 연결되지는 않지만, 개발 환경에서 side-by-side 관련 문제를 줄이는 데 도움이 된다.
10. 실무에서 바로 쓸 수 있는 점검 체크리스트
아래 표는 Visual C++ 재배포 가능 패키지 충돌·오류 의심 시 순차적으로 점검할 수 있는 흐름을 정리한 것이다.
| 단계 | 점검 항목 | 체크 방법 | 결과 해석 |
|---|---|---|---|
| 1 | 오류 메시지 기록 | 정확한 영문·한글 메시지, DLL 이름, 오류 코드를 캡처한다. | 어떤 버전·DLL이 문제인지 1차 단서를 확보한다. |
| 2 | 이벤트 뷰어 확인 | SideBySide 관련 오류 로그에서 필요한 CRT 버전·매니페스트 정보를 확인한다. | 문제가 되는 Visual C++ 버전 또는 프로그램을 좁혀갈 수 있다. |
| 3 | Visual C++ 복구 실행 | 제어판 또는 설정에서 각 버전에 대해 Repair를 수행한다. | 간단한 손상이라면 이 단계에서 대부분 해결된다. |
| 4 | 공식 재설치 여부 | DLL만 개별 다운로드한 이력이 있다면 제거 후 공식 설치 파일로 재설치한다. | 버전 불일치·비공식 DLL 문제를 제거한다. |
| 5 | 시스템 파일 점검 | DISM, SFC 명령어로 시스템 손상 여부를 점검·복구한다. | 여러 프로그램에서 공통적으로 발생하던 오류를 줄일 수 있다. |
| 6 | 전면 재설치 | 모든 Visual C++ 패키지를 제거하고, 정리한 목록에 따라 다시 설치한다. | 설치·제거 상태가 꼬여 있을 때 마지막 수단으로 사용한다. |
FAQ
Visual C++ 재배포 가능 패키지를 모두 삭제해도 되는지에 대한 정리이다.
Visual C++ 재배포 가능 패키지는 각기 다른 프로그램이 서로 다른 버전을 사용하므로, “정리”를 위해 일괄 삭제하는 것은 권장하지 않는다.
특정 버전을 삭제하면 그 버전에 의존하는 프로그램이 실행되지 않을 수 있고, 어떤 프로그램이 어떤 버전을 사용하는지 일일이 파악하기도 어렵다.
정리 목적이라면 실제로 사용하지 않는 오래된 프로그램을 먼저 제거하고, 그 이후 남은 Visual C++ 패키지는 그대로 두는 편이 안전하다.
x86과 x64 Visual C++ 재배포 가능 패키지를 모두 설치해야 하는지에 대한 정리이다.
64비트 Windows에서도 많은 프로그램이 여전히 32비트(x86)로 동작한다.
따라서 같은 연도의 Visual C++ 재배포 가능 패키지에 대해 x86, x64 두 아키텍처를 모두 설치하는 것이 일반적이다.
둘 중 하나만 설치하면, 해당 아키텍처로 빌드된 프로그램이 런타임을 찾지 못해 오류를 낼 수 있다.
Windows 업데이트로 설치된 Visual C++ 패키지를 삭제해도 되는지에 대한 정리이다.
Windows 업데이트가 설치한 Visual C++ 패키지 역시 다른 프로그램이 사용 중일 수 있으므로, 특별한 이유 없이 삭제하는 것은 바람직하지 않다.
특정 패키지가 문제를 일으키고 있다고 판단되면, 먼저 복구(Repair)를 시도하고 필요 시에만 공식 설치 파일로 재설치하는 순서를 따르는 것이 좋다.
Visual C++ 재설치 후에도 side-by-side 구성 오류가 계속되는 경우에 대한 정리이다.
이 경우에는 Visual C++ 패키지 문제가 아니라 프로그램 자체의 매니페스트 오류, 잘못된 설치, 또는 시스템 파일 손상일 가능성을 의심해야 한다.
우선 DISM과 SFC로 시스템을 점검하고, 문제가 되는 프로그램을 완전히 제거 후 최신 버전 설치 파일로 다시 설치하는 것이 좋다.
그래도 해결되지 않으면, 개발사 기술 지원 문서를 확인하거나 로그를 첨부하여 지원을 요청하는 것이 안전하다.
인터넷에서 DLL 파일만 내려받아 System32에 복사해도 되는지에 대한 정리이다.
비공식 DLL 파일은 버전이 맞지 않거나 악성 코드가 포함될 위험이 있으므로 권장하지 않는다.
또한 DLL만 교체하면 레지스트리, 매니페스트, 기타 구성 요소와 버전이 맞지 않아 새로운 오류를 유발할 수 있다.
항상 Microsoft 공식 설치 프로그램으로 패키지를 설치·복구하는 방식을 사용하는 것이 안전하다.
- Industrial Waste Phase Separation Troubleshooting: How to Break Stable Emulsions and Restore Settling
- Mastering Excel Calculation Chain and Dependency Tree for Fast, Reliable Models
- Fix Distorted EIS Arcs: Expert Troubleshooting for Accurate Nyquist and Bode Plots
- Fix NMR Shimming Failure: Expert Troubleshooting Guide for Sharp, Stable Spectra
- Dynamic Gantt Chart in Excel Using Formulas Only (No VBA)
- Excel Dynamic Arrays with Structured References: Complete Guide to Spill-Safe Table Formulas
- 공유 링크 만들기
- X
- 이메일
- 기타 앱