Dependency 관련

C++ 2011. 6. 10. 16:14
http://www.serious-code.net/moin.cgi/RedistributingVisualCppRunTimeLibrary
"응용 프로그램 구성이 올바르지 않기 때문에 이 응용 프로그램을 시작하지 못했습니다. 이문제를 해결하려면 응용 프로그램을 다시 설치 하십시오."

Visual Studio 2005부터는 공용 DLL을 System32라는 곳에 몰아서 보관하지 않고, WinSxS라는
공용 어셈블리 저장공간에 별도로 저장하게 됩니다. 이렇게 저장하는 이유는 버전 충돌을 막기 위해서이고요.
이러한 공용 어셈블리의 위치 정보는 모듈의 Menifest에 저장되어서 참조되게 됩니다.
그래서 사용하는 DLL을 단순히 복사하셔서는 안되고요. cynicjj님 말씀처럼 재배포 패키지를 이용해서 공용
DLL들을 설치하셔야 합니다. (Menifest는 Windows XP이상에서만 사용할 수 있기 때문에, Windows2000에서는
그냥 System32나 어플리케이션이 있는 폴더에 DLL들을 같이 복사해 주셔야 하고요.)

참고로 그런에 에러가 나왔을때, Dependency Walker 프로그램을 이용하면, 무슨 DLL이 없는지 쉽게 확인하실 수 있습니다.

C/C++ > Code Generation 항목에서 DLL 버전 말고 정적 CRT를 사용하도록 한다. 
제일 간단한 방법이기는 
하지만, 온라인 게임 클라이언트 같은 경우에는 매번 업데이트 때마다 
커다란 크기의 실행 파일을 다운로드받아야하는 단점이 있어서 잘 사용하지 않는다는....



'C++' 카테고리의 다른 글

IE9 .exe 파일 다운로드 및 실행시 "이 프로그램은 컴퓨터를 손상시킬 수 있습니다."  (0) 2011.10.21
std::find_if  (0) 2011.10.21
boost 설치  (0) 2011.08.17
64bit programming 고려 사항  (0) 2011.06.10
ActiveX 제작시 고려 사항 - vista, win7, 64 bit  (0) 2011.06.09
RapidXml  (0) 2011.06.05
MFC UI 꾸미기  (0) 2011.06.01
VisualC++ 과 C++0x  (0) 2011.05.30