| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Filtering
- compare
- atmega328
- stream
- Read
- wpf
- SERIAL
- file access
- edge
- flutter
- Gaussian
- subpixel
- Gradient
- Class
- Android
- Unity
- Binary
- aduino
- parameter
- UNO
- APP
- digitalRead
- public
- Contour
- mfc
- sensor
- c++
- Pointer
- Encapusulation
- memory
Archives
- Today
- Total
폴크(FOLC)
MSVC 의 빌드 플래그 관련 본문
728x90
반응형
MSVC에서는 프로그램을 컴파일할 때 어떤 종류의 CRT(C Runtime Library)를 사용할 것인지를 다음과 같은 플래그
주요 컴파일러 플래그 (CRT 종류 선택)
| /MD | 멀티스레드 + 동적 CRT | 동적 (DLL) | 예 | ucrtbase.dll, msvcp140.dll, 등 |
| /MDd | 디버그용 멀티스레드 + 동적 CRT | 동적 (DLL) | 예 | 위와 같지만 디버그 심볼 포함됨 |
| /MT | 멀티스레드 + 정적 CRT | 정적 (라이브러리 내 포함) | 예 | 없음 (모두 실행 파일에 포함됨) |
| /MTd | 디버그용 멀티스레드 + 정적 CRT | 정적 | 예 | 없음 |
어떤 플래그를 선택해야 할까?
- 라이브러리 배포가 필요 없는 독립 실행 파일이 필요 → /MT 또는 /MTd
- DLL을 통한 시스템 공유, 업데이트 지원을 원함 → /MD 또는 /MDd
- 디버그 빌드에서는 /MDd, /MTd, 릴리스 빌드에서는 /MD, /MT
- 라이브러리 배포가 필요 없는 독립 실행 파일이 필요 → /MT 또는 /MTd
- DLL을 통한 시스템 공유, 업데이트 지원을 원함 → /MD 또는 /MDd
- 디버그 빌드에서는 /MDd, /MTd, 릴리스 빌드에서는 /MD, /MT
주의: /MD와 /MT가 섞이면 링크 오류가 발생할 수 있으므로 프로젝트 전체에서 일관되게 사용해야 합니다.
ucrtbase.dll vs msvcrt.dll 차이점
Windows CRT에는 여러 버전이 있으며, 대표적으로 두 가지가 많이 사용
*. msvcrt.dll (Microsoft Visual C Runtime)
- 초기 Windows용 CRT (Windows 95~XP)
- 기본적인 C 함수 (printf, malloc 등) 제공
- Windows 시스템에 내장되어 있었음
- 문제점: 고정된 시스템 DLL이라 버전이 업데이트되지 않음 → 호환성 충돌 발생
*. ucrtbase.dll (Universal C Runtime)
- Windows 10 이후 표준 CRT
- Windows Update로 관리되는 범용 런타임
- printf, malloc, fopen 등 주요 함수는 여기로 이전됨
- MSVC 2015 이후 /MD 플래그를 사용하면 이 라이브러리가 참조됨
| ucrtbase.dll | 표준 C 함수 처리 (printf, malloc 등) |
| vcruntime140.dll | C++ 런타임 초기화/예외 처리 (new, terminate, RTTI 등) |
| msvcp140.dll | STL 등 C++ 표준 라이브러리 기능 지원 |
MSVC 버전CRT 구성관련 DLL
| Visual Studio 2010 | 전통적인 msvcrt | msvcrt100.dll 등 |
| Visual Studio 2015~ | UCRT + VCRuntime 분리 구조 | ucrtbase.dll, vcruntime140.dll 등 |
| /MD, /MT | CRT를 동적(DLL) 또는 정적(내부 포함)으로 사용할지 설정함 |
| msvcrt.dll | Windows 내장된 오래된 CRT (더 이상 권장되지 않음) |
| ucrtbase.dll | 최신 UCRT, MSVC 2015 이후 표준화된 CRT DLL |
| 혼용 금지 | /MT와 /MD 혼용 시 링크 오류 발생 가능 |
728x90
반응형
사업자 정보 표시
사업자 등록번호 : -- | TEL : --