[Tips] Win32 콘솔 애플리케이션에서 MFC class들을 사용하기

5 Comments

이미 잘 알려진 내용이지만 제 블로그의 검색을 위해 짧게 포스팅합니다.

Visual Studio 6.0에서 Win32 콘솔 애플리케이션 (Console Application)으로 프로젝트를 만들어 표준 C/C++ 라이브러리를 이용할 때 MFC (Microsoft Foundation Class Library)의 클래스들 (e.g. CString, CObList)을 이용하는 방법입니다.

1. CRT (C Run-Time) library를 Multithreaded로 변경

  1. Alt+F7을 누르거나 메뉴의 Project / Setting을 선택해서 “Project Settings” 창을 띄웁니다.
  2. “C/C++” 탭에서 “Category”를 “Code Generation”이라고 선택합니다.
  3. 아래 그림과 같이 “Use run-time library”를 “Debug Multithreaded”로 변경합니다.
    ※ 물론 릴리즈 모드인 경우는 Multithreaded를 선택하겠죠.

MFC 클래스를 위한 헤더 파일들을 포함시켜도 링크 에러가 나는 것은 Win32 console application 프로젝트는 기본적으로 “Single-Threaded” CRT library를 사용해서 멀티스레드를 위한 api 구현이 없기 때문입니다. 그래서 이와 같이 CRT 라이브러리를 변경하는 것입니다.

2. 필요한 헤더 파일 포함

사용할 MFC 클래스를 정의하고 있는 헤더 파일들을 포함합니다.

※ MFC의 헤더 파일과 라이브러리 설명은 Devpia의 이 글을 참고하시면 됩니다.

간단히 많은 것을 포함하는 헤더 파일들만 설명드리면..

Afx.h: MFC를 위한 main header file로 컨테이너를 비롯한 많은 MFC 클래스들을 선언합니다.

Afxtempl.h: CArray등 템플릿을 요하는 클래스들의 선언을 가지고 있습니다.

간단히 CString이나 CObList를 사용하는 경우는 Afx.h를 포함하면 될 것이고

CArry, CList등 템플릿 컨테이너 클래스를 사용할 경우는 Afxtempl.h를 포함하면됩니다.

순서는 Afx.h가 먼저 오는 것이 좋겠죠? (순서가 바뀌어도 컴파일 에러는 나지 않으나…)

  • http://bloggertip.com Zet

    움.. 어려워용 헤헤 ;;
    얼론스님 잘 지내고 계시죠? 안부차 놀러왔어용! :)

  • http://simpleblogging.tistory.com/ mjjin

    무지 바쁘신가보죠? ^^…잘 나가던 포스팅이 잠시 중단된것 같은 느낌이네요 ㅎㅎ

  • http://alones.kr/blog alones

    요즘 결정한 것도 좀 있고 준비할 것도 있고 해서 블로그에 소홀했습니다. ^^

    포스트도 포스트이지만 다른 분들과 댓글로 이야기하고 다른 분들의 글을 읽는게 좋았는데 한 일주일 정도 그러지 못한 것 같습니다.

    포스팅 할 것들도 많이 쌓인 것 같습니다.

    여긴 이제 점점 추워지는 것 같습니다. ^^ 몸 조심하시구요~

  • 신우

    구글에서 검색했는데 또 만났네요. :)

  • Pingback: Tramadol.