2011. 11. 17. 16:50

VC9.0 + MFC + StaticLink 시, gdiplus.dll 오류 해결법

원문 : http://www.indidev.net/forum/viewtopic.php?f=5&t=131

VC6.0를 넘어서는 compiler로 빌드되면 재배포팩 이슈가 항상 따라다닙니다.
그래서, 최초 실행/가동 프로그램(예, 설치프로그램)은 VC6.0으로 빌드하여,
의존성 문제를 원천봉쇄하기도 합니다.

되도록 VC6.0을 역사적 뒤안길로 보내버리기위해,
VC9.0으로 static link로 빌드 하면 문제가 없는 것으로 추측했으나,
gdiplus.dll의 의존성 문제가 발생합니다.

즉,



와 같이 하여 mfc나 msvcrt* 같은 의존성은 없지만,
빌드본을 depends로 확인하면 아래와 같이 gdiplus.dll이 포함됩니다.


그런데, 문제는 Windows 2000 SP4 + IE5등 열약한 환경에서는 기본적으로 시스템에 gdiplus.dll이 포함되지
않습니다! 따라서 아래와 같은 현상이 발생합니다.
(DLL gdiplus.dll을(를) 지정한 경로 .... 에서 찾을 수 없습니다.)


Project Setting 수정으로 모든 방법을 동원해 봤는데, 해결되지 않았습니다.
해결법은, 단순히 theApp 클래스인 CWinAppEx를 CWinApp로 변경하고,
오류가 나면, CWinApp으로 replace해 주면 빌드가 완료되는데,
그 이후로는 gdiplus.dll이 떨어져나가며, 빌드본의 크기가 현격히! 줄어듭니다.

리본 컨트롤등을 사용하지 않는다면, 되도록 CWinApp을 사용하는것이 좋을 듯 합니다.