일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- memory
- flutter
- Encapusulation
- Filtering
- Binary
- file access
- digitalRead
- Gradient
- Unity
- SERIAL
- subpixel
- aduino
- wpf
- Class
- parameter
- Android
- sensor
- UNO
- c++
- edge
- atmega328
- mfc
- Contour
- compare
- Pointer
- public
- stream
- Gaussian
- Read
- APP
Archives
- Today
- Total
폴크(FOLC)
VS2022 - 솔루션 컴파일 옵션( MD / MT ) 본문
728x90
반응형
Visual Studio 2022 에서 C/C++ 프로젝트를 빌드할 때 설정하는 /MD, /MT 옵션은 런타임 라이브러리(Runtime Library)를 연결 g하는 방식을 결정 한다.
배포
/MD | Multi-threaded DLL | CRT(C Runtime Library)를 DLL로 연결함 (MSVCRT.dll) |
/MT | Multi-threaded | CRT를 정적으로 링킹 (코드에 포함시킴) |
개발 ( 디버깅 )
/MDd | 디버그 DLL CRT (MSVCRTD.dll) 사용 |
/MTd | 디버그 Static CRT 사용 |
모두 멀티스레드 환경을 지원, 동적/정적 DLL 사용 여부
/MD (Dynamic Link / DLL 방식)
- **CRT (C-Runtime-Library)**를 DLL(MSVCRT.dll 또는 MSVCP140.dll 등)를 동적으로 연결
- 실행 시 운영체제에 해당 DLL이 설치되어 있어야
- 장점:
- 여러 프로그램에서 동일한 CRT DLL을 공유 ( 메모리 사용량 감소 )
- DLL만 교체 가능 - 단점:
- 대상 PC에 해당 DLL이 없으면 런타임 에러 발생 가능
- DLL 버전 충돌 가능
/MT (Static Link / 정적 방식)
- CRT를 바이너리에 정적으로 포함시킵니다.
- 실행 파일만 배포 가능.
- 장점:
- 외부 DLL 없이 실행 가능
- DLL 충돌 우려 없음. - 단점:
- 여러 개의 .exe 또는 .dll이 각자 CRT를 포함하면 메모리 낭비.
- 코드 수정 또는 컴파일 해야 업데이트 가능
- 동일 프로그램 내 서로 다른 CRT 인스턴스를 사용할 경우 Heap 충돌 가능
주의사항
- 모든 프로젝트(모듈)이 동일한 CRT 옵션을 사용해야 함:
- /MD와 /MT를 혼합하면 링크 에러, 또는 런타임 충돌 발생 가능.
배포 대상 시스템에 Visual C++ Redistributable 설치 가능 | /MD |
독립 실행 파일(무설치 포터블 앱)을 배포해야 함 | /MT |
보안 패치를 반영하고 싶고, DLL 관리가 가능함 | /MD |
DLL 없는 간편 실행이 중요함 | /MT |
728x90
반응형
사업자 정보 표시
사업자 등록번호 : -- | TEL : --