/MT와 /MD의 차이
/MTd는 /MT의 디버그버전. 마찬가지로 /MDd는 /MD의 디버그 버전.
/MT: 내가 만드는 응용 프로그램이 C런타임 라이브러리의 기능을 사용할 때 static link version인 LIBCMT.lib를 사용하여 프로그램이 빌드된다는 뜻.
/MD: 내가 만드는 응용 프로그램이 C런타임 라이브러리의 기능을 사용할 때 dynamic link version인 MSVCRT.lib를 사용하여 프로그램이 빌드된다는 뜻.
즉 내가 dll을 만들든 .lib를 만들든 그냥 .exe를 만들든 이 옵션은 아무거나 골라도 상관이 없음.
문제는 .lib를 가져다가 쓰는 경우 이 /MT /MD옵션이 맞지 않으면 'XXX is already defined in YYY’같은 에러가 뜨면서 컴파일이 안되는 현상. 이 때는 /MT나 /MD를 통일시켜줘야 한다.
MFC의 경우 라이브러리가 /MT를 사용하기 때문에 내가 /MD에 놓고 프로그램을 만들면 컴파일이 안된다.
즉 간혹 내가 컴파일 할 수 없는 라이브러리가 /MD로 컴파일 되어 있는 경우 내 프로젝트도 /MD로 컴파일을 해야하고 이 때는 MFC라이브러리를 쓸 수 없다.
내가 라이브러리 컴파일이 가능하다면 /MD든 /MT든 상관없지만 /MT를 쓰는게 마음건강에 좋다.
'Programming > Windows Visual C++' 카테고리의 다른 글
C언어의 메모리 구조(Data, Heap, Stack) (0) | 2020.03.16 |
---|---|
.lib와 .dll의 차이 (0) | 2020.03.16 |
윈도우 서비란 무엇인가? 서비스 만들기 (0) | 2020.03.16 |
함수에서 문자열을 리턴하는 올바른 방법 (0) | 2020.03.16 |
.h파일 include하는 올바른 방법 (0) | 2020.03.16 |