Visual C++ 2005 버전은, 내부 버전은 8.0이다.
이번 버전부터 응용 프로그램 배포가 골때려졌다. 디버그든 릴리즈든 실행파일이나 DLL을 그냥 배포해서는 안돌아간다.
A required .DLL file, "MSVCR80.dll" was not found.
app.exe has failed to start because the application configuration is incorrect.
뭔가 이런 종류의 에러를 떨구고 뒈져버리는 거다.
그 이유는,
Side-By-Side Assembly 개념을 도입했기 때문이란다. 그게 뭐냐면, 쉽게 말하면 응용 프로그램마다 별도의 환경으로 동작하도록 해주는 거란다.
이전에는 System32 폴더에 msvcr71.dll 같은 것들이 있으면 그냥 돌아갔는데, 그게 빌드한 환경에 따라 버전이 꼬이거나 뭐 그딴 문제가 있었나보다. 나는 한번도 안당해봐서 모르겠지만.
그래서, 이걸 배포하는 방법은, 뭐 여러가지가 있지만 추천하는 방법은 딱 세 가지다.
인스톨러(.msi)로 만들어서 배포한다. ==> 제대로 스텝 밟아가며 배포할 때 이용하게 될 듯 하다.
vc_redist 폴더(Microsoft Visual Studio 8\SDK\v2.0\Bootstrapper\Packages\vcredist_x86) 안에 있는 vcredist_x86.exe 셋업 파일(라이브러리 실행환경 쯤 되나???)을 배포하여 설치한다. ==> 주로 DLL을 배포할 때 이용하게 될 듯 하다.
manifest와 CRT까지 같이 배포한다. ==> 테스트나 일반 EXE파일을 배포할 때 자주 이용하게 될 듯 하다.
1번, 2번은 굳이 설명할 필요없고, 3번을 좀 더 설명하자면,
응용 프로그램이 있는 폴더에 Microsoft.VC80.CRT이라는 폴더를 통째로 복사해 주는 것으로, 이것은 %Microsoft Visual Studio 8%\VC\redist\x86 폴더 아래에 원본이 들어있다. 물론 디버그 환경인 경우에는 그 옆에 Debug_NonRedist라는 폴더를 쓰면 된다.
참고: http://www.serious-code.net/moin.cgi/RedistributingVisualCppRunTimeLibrary
'Tech: > C·C++' 카테고리의 다른 글
Calling Convention (함수 호출 규약) (0) | 2012.08.22 |
---|---|
[펌] Win32 API FAQ (1) | 2008.06.26 |
C++ 동기화 객체(Critical Section, Mutex, Semaphore, Event) (0) | 2008.06.26 |
ISAPI Filter 예제 2 (MFC + WIN32 API) (0) | 2008.06.26 |
ISAPI Filter 예제 1 (MFC) (0) | 2008.06.26 |