DLL 만들때, 정적 라이브러리에서 MFC 사용 !!!(펌)

2015. 9. 24. 17:02IT-개발/winapi 및 MFC

반응형

(출처 : http://six605.tistory.com/466)


 MFC 응용프로그램 배포 시, MFC 사용 방법을 프로젝트 설정에서 설정해준다. 



공유 DLL에서 MFC 사용 : 응용프로그램 배포 시 mfc**.dll 파일을 함께 배포.
정적 DLL에서 MFC 사용 : 응용프로그램의 실행 파일에 mfc**.dll 이 포함되어 배포되기 때문에 응용프로그램만 배포.


  배포 시 응용프로그램만 배포하는게 관리하기도 편하고 오작동의 가능성도 적기 때문에 "정적 DLL 에서 MFC 사용" 으로 프로젝트를 설정하여 개발하게 된다.

  응용프로그램이 DLL 일 경우 위와 같이 설정하면 컴파일 시 다음과 같은 오류 메시지가 발생한다.
fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds

다음과 같이 설정해 주자.


1. 전처리기 정의

C/C++ → 전처리기 → 전처리기 정의
"_AFXDLL" 추가




2. 코드 생성

C/C++ → 코드 생성 → 런타임 라이브러리
Debug 모드일 경우    : "다중 스레드 디버드 DLL(/MDd)" 설정
Release 모드일 경우 :  "다중 스레드 DLL(/MD)" 설정




실제 혼자 해결해 보려고 바둥대다 보니~ 시간 되게 많이 먹히게 된다. ㅠㅠ

이런 좋은 글이 있을 줄이야~ 구글링은 능력이다~ ㅠㅠ

핵심... DLL에서 MFC 정적으로 link 시켜서 사용하려면~ _

#define _AFXDLL // <= 요걸 해줘야 한다는 거~~~, 난 stdafx.h 파일 제일 위쪽에 이거 넣어 줬더니 되네요~