C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 강좌/문서
C++Builder Programming Tutorial&Docments
[182] VC2008 Express에서 MFC 프로젝트 컴파일 하기.
김태선 [cppbuilder] 22120 읽음    2009-01-22 22:31
C++Builder 포럼에 MS 강좌를 올려 죄송하지만, 빌더 플머도 한번쯤 봐두는 것도  나쁘지 않을 것으로
생각됩니다. 사실 이 주제는 어쩌면 Express 버전을 릴리즈한 취지와 어울리지 않아 이상한 강좌라고
오해를 할지도 모르지만, 이는 그냥 순수한 기술적인 가능성만을 타진한 차원일 뿐임을 먼저 밝힙니다.
이런 시도를 해봤다는 사람은 아직 본 일이 없지만, 시도를 해 봤다는 것 자체에 의의를 두고 있습니다.


VisualStudio2008 Express 버전은 MS에서 릴리즈한
누구나 제한 없이 사용할 수 있는 무료 개발툴입니다.
여기에는 기본 Console 프로그램과 Win32 프로그램 제작을 할 수 있습니다.
VC2005Express 버전에는 Console 프로그램만 개발할 수 있고, win32 프로그램을 개발하기 위해서는
windows SDK를 따로 다운로드 해서 설치해서 사용해야 합니다.
Express 버전에서 만들어진 프로그램은 상용으로 사용해도 아무런 라이센스 제약을 받지 않습니다.

무엇보다도 VC2008 Express 버전에는 최신 MS C++컴파일러가 내장되어 있어 매력적이나,
MFC나 ATL 같은 어플리케이션 프레임웍이 내장되어 있지 않아 매우 아쉽습니다.
사실 그것이 내장되어 있다면 Express 버전이 아니라 Standard 버전에 가까워 지겠죠.

그런데, 지금 같은 세상에 win32 API로만 프로그램을 해야 한다는 것은 정말 악몽같은 것입니다.
특히 CString 같은 아주 기초적인 클래스 조차도 사용하지 못한다는 것은 암울 모드입니다.
Express 버전을 사용하다 보니, 남이 만든 MFC 프로그램은 컴파일 하는게 가능하지 않을까 하는 생각이 들었습니다.
왜냐하면 컴파일러 자체는 순수 컴파일러로서의 역할만 하고 링커는 순수 링커로서의 작용만 한다면,
라이브러리 수준인 MFC가 컴파일 되지 않을리 없다고 생각했기 때문입니다.
빌더6에 보면 오래된 버전의 MFC를 사용할 수 있게 되어 있습니다. 빌더도 MFC를 컴파일 할수 있는데 하물며...

그래서 간단한 샘플을 VC2008 Pro 버전에서 만들어 실험한 뒤 소스 코드를 그대로 가져와
다른 머신에 설치 되어 있는 VC2008 Express로 가져와 그대로 컴파일 해 봤습니다.
물론 될리가 없지요. afxmfc 가 없으닌까요.

그러면 컴파일이 되게 하기 위해서 pro 버전에 있는 afxmfc 폴더 밑에 있는 MFC 관련 파일을 모두 복사해서
Express 버전이 설치 되어 있는 머신에 적당히 폴더를 만들어 복사해 넣고,
소스에서 추가로 찾을 디렉토리를 만들어 놓은 include, resource, link 세군데에 각각 알맞게 추가하고
컴파일을 다시 해봤습니다.
(사실은 VC 2005 버전의 afxmfc 를 가져와 실험한 것인데, 별 차이가 없으므로 VC 2008이라고 그냥 표현하겠습니다)

결과는 멋지게 잘 되더군요. MFC 정적 링크 실행화일 까지 잘 만들어집니다.
Debug 버전 Release 버전 모두 잘 만들어지고, Debug 버전에서는 디버깅 기능 사용에도 큰 지장은 없습니다.
정적 링크를 했으므로 다른 머신에 배포해도 실행되어야 하는데, 다른 머신에서 실행해 보면
역시 잘 됩니다.

Express 가 설치된 머신에는 대략
c:\afxmfc 로 폴더를 잡고 이 밑에 include lib 를 구성하면 됩니다.
간단히 하자면 그냥 pro 버전의 afxmfc 디렉토리를 몽땅 옮겨 오면 됩니다.

프로젝트 속성:
  1.  구성일반->C/C++ ->추가포함디렉토리 
  2 . 구성일반->리소스 ->추가포함디렉토리
  3.. 구성일반->링커 ->추가 라이브러리 디렉토리
에 추가해 주어야 하는데, 각각
c:\afxmfc\include;  c:\afxmfc\include;  c:\afxmfc\lib;
이렇게 추가해주면 됩니다.



다만 한가지 아쉬운 것은 소스를 다루는 부분은 VC 2008 정식 버전과 큰 차이는 없으니 괜잖은데,
리소스 에디팅을 할수 없다는 단점이 있습니다. Express 버전에서는 리소스 에디팅을 지원하지 않습니다.
그래서 화면 디자인은 IDE 도움을 받을 수 없습니다.
리소스를 텍스트 에디터로 작성해야 하거나 다른 툴로 만들어야 한다는 것이죠.
그런데, 원래 VC의 화면 디자인 수준이 C++빌더에 비하면 거의 조악한 수준이라서 대단히 큰 도움은 안되고,
다 코딩으로 대치할 수 있습니다. (VC 2008 까지도 화면 디자인은 개선된 것이 없습니다)
그리고 리소스 에디팅은 VC 다른 버전에서 해서 최종 컴파일만 Express에서 하는 편법을 쓸수도 있습니다.

왜 이런 이상한 방법을 쓰냐고 물으신다면.... 그럴 수 있다는 기술적인 측면을 다룬다는 것을 전제했다시피,
플머의 호기심이라고 그냥 말해두죠.


방법적인 것은 이 정도 설명으로 간략하게 마칠 수 있습니다.
사실 이 방법은 MFC가 Express 버전에서 컴파일 될 수 있음을 보인 간략한 실험에 불과하며,
실제로 MFC 를 컴파일하고자 한다면 추가적인 노력을 필요로 할지도 모릅니다.

MFC 뿐만 아니라 WTL 도 Express 버전에서 사용 가능합니다.
이에 대한 내용은 아래 링크에 있습니다.
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=278&MAEULNo=20&no=19861&ref=19861
WTL은 VC 개발툴과 완전히 별개로 릴리즈 된 것이므로
Express 버전에서 WTL을 쓰는 것은 아무런 문제가 없습니다.



그럼.

** 이 기사는 펌을 허용하지 않습니다.
김호광 [testcode]   2009-01-23 02:22 X
익스프레스는 단속이 안걸리기 때문에 그렇게 편법으로 쓰는 회사가 있다고 들었습니다. 쿨럭-;;
김태선 [cppbuilder]   2009-01-23 17:09 X
그런 회사가 설마 있으리라고는 상상이 안되는군요.
볼랜드 제품처럼 개발툴이 수백만원 하는 것도 아니고,
Visual Studio Standard 2008이 약 30여만원 pro버전이 약 90여만원이면 구매 가능한 것을 생각하면
그건 회사가 절약의 차원도 아닌 것 같고.. 아마도 특수한 환경이나 아주 간단한 프로그램을 만들면 되는데
굳이 개발툴을 구매할 필요까지 없는 경우이지 않는가 생각됩니다.

개발툴 가격은 MS처럼 현실화 시키는 것이 빌더/델파이 개발툴의 대중화에 가장 중요한 문제 같은데
엠바카데로가 좋은 소식을 내 놓았으면 좋겠군요.
용맨소녀 [doyongid]   2009-01-30 15:29 X
모바일 플밍에는 익스프레스가 딱인듯..;;

+ -

관련 글 리스트
182 VC2008 Express에서 MFC 프로젝트 컴파일 하기. 김태선 22120 2009/01/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.