Visual C++ /MT 와 /MD 옵션

Visual C++ 컴파일 옵션 중 코드생성 -> 런타임 라이브러리 에 보면 다음과 같이 4가지 선택 항목이 있다.
다중 스레드(/MT)
다중 스레드 디버그(/MTd)
다중 스레드 DLL (/MD)
다중 스레드 디버그 DLL (/MDd)

우선 디버그 모드일 경우를 제외하면 /MT 와 /MD 가 있다.
이 둘은 코드생성시(컴파일시) 사용하는 C Runtime Library (CRT) 가 다르다.

- MT : CRT(LIBCPMT.LIB) 를 정적 링크하여 빌드한다.
- MD : CRT(MSVCPRT.LIB) 를 동적 링크하여 빌드하기 때문에 런타임시 MSVCP90.DLL(VC 버전에 따라 다름)를 필요하게 된다.

[참고]
Visual C++ 2008 로 컴파일한 실행 파일이 다른 PC 에서 아래와 같은 메세지를 보이면서 실행되지 않는 경우가 있다.
"응용 프로그램 구성이 올바르지 않기 때문에 이 응용 프로그램을 시작하지 못했습니다. 이 문제를 .... "

이 경우 컴파일 옵션에서 코드 생성을 MT(Multi Threaded) 로 변경하면 된다.
하지만 다른 라이브러리를 사용해서 MD(Multi Threaded DLL)로 설정해야만 한다면
아래사이트를 통해 Visual Studio 2008 런타임 라이브러리 재배포 패키지를 설치하면 된다.

http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf

comments:

댓글 쓰기