반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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
Archives
Today
Total
관리 메뉴

폴크(FOLC)

VS2022 - 솔루션 컴파일 옵션( MD / MT ) 본문

카테고리 없음

VS2022 - 솔루션 컴파일 옵션( MD / MT )

folcjin 2025. 6. 14. 11:44
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 : --