블로그 이미지
대갈장군

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

Notice

2012. 12. 15. 04:17 프로그래밍/C++

http://msdn.microsoft.com/en-us/library/8kche8ah(v=vs.100).aspx


이글은 Visual Studio 2010 C++을 겨냥한 것임을 미리 밝혀둔다.


알다시피 내 컴퓨터에서 작성한 프로그램이 다른 컴퓨터에서 잘 작동할 것이라는 핑크빛 꿈을 꾸는 경우가 많은데 현실은 정반대다. 그렇다면 내가 내 컴퓨터에서 작성한 코드가 다른 사람 컴퓨터에서 잘 돌아가게 하려면 무슨짓을 해야 할까? 정답은 DLL을 프로그램이랑 같이 포장해서 보내줘야 한다는 것인데, 어떤 DLL이 필요한지는 어떻게 알까? 


그중에 한 방법이 Dependency Walker를 이용해 내가 만들 어플리케이션의 필요 DLL들을 검색해보는 것이다.


사진을 첨부하려 했는데 첨부가 안되네~ 아무튼, Dependency Walker를 사용하면 해당 프로그램에 필요한 DLL 목록이 주루루룩 뜬다. 뭐 경고 중에는 가볍게 무시해도 괜찮은 것들도 많지만 Delay-load Dependency나 Explicit (Dynamic) Dependency가 아닌데 못찾겠다고 나오는 DLL들은 뭔가 문제가 있을 확률이 높으니 눈여겨 봐야 할 필요가 있다.

 

본인이 작성한 프로그램이라면 어떤 LIB 파일이 프로그램에 링크 되었는지 알고 있으므로 운영제체나 .NET 프레임워크에서 공통적으로 지원하는 공유 DLL을 제외하고 어떤 기타 DLL이 반드시 필요한지도 일반적으로는 알고 있어야 정상이다.

 

다음 표를 보면 어떤 DLL이 어떤 경우에 필요한지에 대해서 간단하게 설명하고 있다.

 

Visual C++ Library

Description

Applies to

atl100.dll

Active Template Library (ATL).

Applications that use ATL.

msvcr100.dll

C Runtime Library (CRT) for native code.

Applications that use the

 C Run-Time Libraries.

msvcp100.dll

Standard C++ Library for native code.

Applications that use the 

Standard C++ Library.

mfc100.dll

Microsoft Foundation Classes (MFC) Library.

Applications that use

 the MFC Library.

mfc100u.dll

MFC Library with Unicode support.

Applications that use the

 MFC Library and require 

Unicode support.

mfcmifc80.dll

MFC Managed Interfaces Library.

Applications that use the 

MFC Library with

 Windows Forms Controls.

mfcm100.dll

MFC Managed Library.

Applications that use the

 MFC Library with

 Windows Forms Controls.

mfcm100u.dll

MFC Managed Library with Unicode support.

Applications that use the

 MFC Library with 

Windows Forms Controls and

 require Unicode support.

 

그런데 마지막 문단에 보면 이런 말이 있다. 일반적으로 시스템이 제공하는 DLL들 예를 들자면 Kernel32.dll, User32.dll, Ole32.dll 같은 놈들은 원래 재배포가 필요가 없다. 왜냐면 윈도우즈를 쓰는 모든 컴퓨터에는 기본적으로 저놈들이 있게 마련이기 때문이다. 하.지.만! 문제는 윈도우가 여러 버젼이 있다는 점이다. 윈도우 7과 윈도우 7 서비스팩 1과는 많은 차이가 있다. 고로 이런 경우 같은 운영체제이다고 하더라도 프로그램이 안돌아 갈수 있다는 점! 고로, 반드시 업데이트를 통해서 업그레이드 하거나 아니면 마이크로소프트에서 제공하는 각종 리디스트리뷰션 패키지 (재배포 설치 파일들)를 통해서 필요한 부분을 설치해야 한다!

 

저거 생각보다 중요한 점이라는 점!










posted by 대갈장군