공유 DLL에서 MFC 사용 VS 정적 라이브러리에서 MFC 사용
이 둘의 차이점?
기본적으로 "Use MFC in a Shared DLL" 가 설정되어 있습니다. 이 설정은 현재 개발중인 프로그램이 필요로 하는 라이브러리를 기본적으로 제공되는 DLL에서 참조하여 사용하겠다는 뜻입니다. 따라서 이 모드로 컴파일을 하여 실행파일을 배포하려면, 해당 컴파일에 Visual C++가 설치되어 있거나 다음과 같은 DLL이 있어야 합니다. mfc42d.dll, mfco42d.dll, msvcirtd.dll, msvcrtd.dll 물론 이 네 종류의 DLL 파일이 모두 있어야 하는 것은 아닙니다. 개발된 프로그램의 성격에 따라서 이 중 한 개정도가 필요 없을 때도 있습니다.
이 DLL은 이름이 mfc42d.dll과 같이 d로 끝나는데, 이 d는 "Debug" 의 약자로 생각하시면 됩니다. 이 파일들은 윈도우 시스템이 설치된 폴더의 "system32" 폴더 아래에 있습니다. 필요하다면, 해당 폴더에서 이 dll들을 복사해서 실행파일을 배포할 때 같이 배포하면 됩니다. 사실, 어떤 경우에 보면, 실행파일은 크기가 얼마되지 않는데 같이 붙어 다니는 dll의 사이즈가 엄청 큰 이상한 경우가 발생 하기도 합니다."Use MFC in a Static Library" 로 설정되어 있는 경우 컴파일을 하고 나서 실행파일을 배포할 때 별도의 dll을 같이 제공할 필요가 없습니다. 실행파일만 제공하면 되죠. 하지만, 이 방법은 별도의 dll이 없는 반면에 실행 파일의 사이즈가 좀 크다는 단점이 있습니다.
이 두 가지를 놓고 볼 때, 다음과 같이 일반적인 결론을 내릴 수 있습니다. 단순히 하나의 실행파일을 가지는 프로그램인 경우, "Use MFC in a Static Library" 를 사용해서 컴파일 하는 것이 비교적 유리하고 여러 개의 실행파일과 또는 dll이 사용되는 프로그램인 경우 각각의 실행파일 사이즈를 줄일 수 있는 "Use MFC in a Shared DLL"을 사용하는 것이 더 유리하다고 할 수 있습니다. 따라서 개발자가 이 두 가지 상황을 잘 판단해서 사용하면 될 것 같습니다.
다음과 같이 설정해 주자.
2. 코드 생성
참고 : http://six605.tistory.com/466
참고 : https://social.msdn.microsoft.com/Forums/ko-KR/ba6bfe1c-8f80-45ea-809b-ec543dd6dc31/-dll-mfc-vs-mfc-?forum=asppnetko
'Programming > MFC' 카테고리의 다른 글
MFC Tab Control Color Change #1 (1) | 2016.10.18 |
---|---|
LINK : warning LNK4098: 'LIBCMT' defaultlib가 다른 라이브러리와 충돌합니다. /NODEFAULTLIB:library를 사용하십시오. (0) | 2016.10.06 |
MFC Dialog Modal (0) | 2016.09.22 |
MFC Modal and Modeless Dialog Boxes (0) | 2016.09.06 |
MFC Alert MessageBox2 (0) | 2016.09.06 |