'dll hell'에 해당되는 글 1건

  1. 2006/08/03 VS2005으로 작성한 코드가 다른 컴퓨터에서 작동을 안할때.. (2)

VS2005으로 작성한 코드가 다른 컴퓨터에서 작동을 안할때..
2006/08/03 11:18
이런 황당할때가...
간단한 코드를 테스트하려고 VS.NET으로 작성한 MFC가 다른 VS.NET이 설치되지 않은 컴퓨터에서 작동하지 않는다.
라이브러리를 복사해도 마찬가지고...

응용 프로그램 구성이 올바르지 않기 때문에 이 응용 프로그램을 시작하지...

혹은 msvcr80.dll 를 찾을수 없다는 에러가 난다면...

해결방법 :

1. VS.NET용 라이브러리
릴리즈 버전은
C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86
디버그 버전은
C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist
에서 CRT, MFC, ATL에 맞는 dll을 실행파일과 같은 경로명에 복사해주면 된다.
(Microsoft.VC80.*.manifest 도 포함해서)

2. C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86 또는

http://www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=ko

자신에 맞는(x86등등) 것을 다운받아서 설치하면 된다.


원인 :

Windows XP에서는 DLL Hell[각주]새로운 프로그램을 설치할때 다른 프로그램이 사용하는 DLL을 덮어 쓰거나 혹은 버전의 불일치로 오는 문제로 기존의 프로그램들이 제대로 동작하지 않는 경우가 있다.[/각주]을 빠져나가려고 Side-by-Side Assembly라는 개념을 만들었다. 이건 여러 버전의 DLL을 동시에 시스템에 존재할 수 있게 해주고, DLL을 사용하는 응용프로그램이 원하는 DLL 버전을 골라서 쓸 수 있도록 해주는 방법이다.
SideBySideAssembly 의 강력한 점은 응용프로그램에서 직,간접적으로 로드하는 모든 DLL이 이 설정의 영향을 받는다는 것이다. 이전에는 응용프로그램이 로드한 DLL에 의해서 간접적으로 로드되는 DLL을 제어할 수 있는 방법이 없었다.

이러한 새로운 방식으로 기존방식대로 VS.NET 라이브러리를 복사하는것으로 끝나지 않고 배포를 위한 별도의 작업이 필요하게 된다.

문제 해결에 대한 페이지
http://www.serious-code.net/moin.cgi/RedistributingVisualCppRunTimeLibrary
http://www.codeproject.com/cpp/vcredists_x86.asp
http://cafe.naver.com/solidcode.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=8
2006/08/03 11:18 2006/08/03 11:18
Trackback Address :: http://hongyver.pe.kr/ttblog/trackback/603