MFC 라이브러리를 이용하여 C++/CLI 모듈을 만들 때, MFC 라이브러리의 MFC 사용 옵션에 주의를 기울여야 할 것 같다.



조사한 정보에 의하면 프로젝트 옵션 중 "MFC 사용" 옵션에 "공유 DLL에서 MFC 사용" 을 해야 한다고 했다. "정적 라이브러리에서 MFC 사용" 을 선택하였을 때 어떤 이슈가 있다고 읽었는데... 배포의 편의를 위해서 "정적 라이브러리에서 MFC 사용" 을 선택하고 빌드를 하였다.

 x64 OS 장비에서 테스트를 하는데 자꾸 응용프로그램이 덤프를 남기고 종료되었다. 알아보니... 위의 설정 즉, MFC 사용 옵션을 "정적 라이브러리에서 MFC 사용" 선택하여도 런타임에는 MFC 공유 모듈들을 요청하였고, 없으면 실패해서 응용프로그램이 종료되었다. 

"정적 라이브러리에서 MFC 사용" 선택하여도 "공유 DLL에서 MFC" 로 빌드한것과 같이 공유 DLL 을 참조한다.


InstallShield2008을 이용한다. 따라서 설치할때 공유 MFC dll 들을 머지 시켜 설치하면 된다.
아니면 Visual C++ 9.0 runtime files (vcredist) packages 를 수동으로 설치해서 배포 하여도 된다. 수동으로 설치 할 경우 설치 실행 파라미터 옵션은 다음과 같다.

Unattended install
vcredist_x86.exe /q:a

Unattended install with no cancel button
vcredist_x86.exe /q:a /c:"msiexec /i vcredist.msi /qb! /l*v %temp%\vcredist_x86.log"

Silent install
Vcredist_x86.exe /q:a /c:"msiexec /i vcredist.msi /qn /l*v %temp%\vcredist_x86.log"



Posted by six605
,