VC80(VS2005) 부터 DLL Hell 문제를 해결하기 위해 배포방식이 조금 변경되었다.
DLL Hell 은 간단히 정리하면 하나의 PC 에 하나의 DLL 만 존재 할수 밖에 업어서 생기는 문제이다.
어떤 문제가 생기나 ? 제일 많이 발생하는 문제는 DLL 의 버전 문제이다. 한 PC 에 하나의 DLL 만 설치되면 버전 충돌문제가 발생할수 있다. 이런 문제를 해결하기 위해 같은 DLL 이라도 버전별로 설치해 놓고 쓰고 싶다는 얘기 이다.
하여튼 각설하고 그럼 어떻게 배포 해야 하나 ?
1, VC80 으로 배포 하면 기본적으로 Manifest 파일이 생성된다. ("./Release/Test.exe.intermediate.manifest")
2, Manifest 파일을 열어본다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
3, Test.exe 가 실행되기 위해서는 VC90.DebugCRT 파일이 필요하단 말이당. (MFC 로 만들면 몇가지 더 생긴다.)
"C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT"
이경로에 파일을 복사해서 Test.exe 파일가 같이 놓으면 실행하는데 문제가 없을 것이다.
4, 참고로 시스템에 설치되는 Manifest 파일과 DLL 들은 "C:\WINDOWS\WinSxS" 안에 있으니 배포할때 참고 하면되겠다.
'programming' 카테고리의 다른 글
TCP 소켓에서 KEEPALIVE 옵션 사용 (4) | 2009.04.13 |
---|---|
Visual Studio 2005 (VC++) 원격 디버깅 하기 (0) | 2009.04.07 |
64 bit 지원하기 (0) | 2009.04.03 |
printf, va_list 사용시 제어문자, 서식문자 정리 (0) | 2008.09.08 |
MS-SQL Stored procedures 에서 Select 와 Output Parameter 동시 사용시 주의점 (0) | 2008.08.04 |