CRT 2

libcmt.lib 링크 충돌 문제

라이브러리를 링크하여 개발하는 경우, 32bit의 Debug/Release 및 64bit의 Debug/Release에 환경에 맞게 링크할 라이브러리를 각각 설정해야 한다는 불편함이 있습니다. 또한, 다수의 라이브러리를 사용할 때 상호간 링크 충돌이 발생하면 해결이 상당히 까다로워 집니다. 그래서 가능하면 라이브러리 용으로 개발된 프로젝트의 소스코드 파일을 직접 Include하여 컴파일하는 방식을 선호하는데, 이 때에도 심심치않게 libcmt.lib 링크 충돌 에러를 만나게 됩니다. 이는 해당 라이브러리 프로젝트에서 CRT를 Include하고 있는데, MFC 프로젝트에서도 CRT 라이브러리를 사용하기 때문에 발생하는 문제입니다. 이를 해결하려면 프로젝트 설정을 통해 명시적으로 링크 순서를 변경하는 방법이 ..

CRT (C Run-time Libraries)

C Run-time Libraries 란? 프로그래밍 언어는 구문이나 예약어 같은 원론적인 것만 정의하는 것이 아닌, 그 문법을 토대로 프로그램의 작성에 필요한 각종 기본적인 자료구조와 알고리즘, 입출력 기능들도 구현되어야 합니다. C 언어의 경우 printf, fopen 등과 같이 주로 사용되는 함수들은 라이브러리 형태로 제공되고 있으며, 이들의 집합을 [C Run-time Libraries]라 합니다. 애초에 main 함수나 WinMain 함수가 호출되고 각종 인자를 전해주는 것부터 C/C++ 언어가 제공하는 런타임 라이브러리의 역할이며, 이는 결국 어떠한 프로그램이든 반드시 하나 이상의 런타임 라이브러리를 사용하게 된다는 의미가 됩니다. CRT 링크 옵션의 비교 Visual Studio 에서 설정 ..