2013-06-30 2 views
1

저는 특정 프로젝트를 만들어서 사용자에게 배포하고 있습니다. 두 가지 빌드 구성, 디버그 및 릴리스 있습니다. 디버그는 분명히 디버깅에 사용되지만 디버깅 구성에는 외부 DLL에 대한 종속성이있는 특수 디버깅 메모리 관리자가 사용됩니다.EXE의 종속성을 프로그래밍 방식으로 확인하는 방법이 있습니까?

실수로 디버그 구성을 사용하여 설치 프로그램 패키지를 빌드하고 배포 한 다음 사용자가 특수 DLL을 가지고 있지 않아 설치 한 후에 실행하지 못했습니다. 앞으로도 그런 일이 일어나지 않도록하고 싶습니다.

종속성 워커를 실행하여 프로그램에서 종속성을 얻을 수 있다는 것을 알고 있지만 프로그램 방식으로이를 수행 할 방법을 찾고 있습니다. 특히 설치 프로그램을 만드는 동안 스크립트를 실행할 수있는 방법이 있습니다. 프로그램을 검사하고이 DLL에 종속성이 있는지 확인하고 설치 프로그램 작성 프로세스를 일으키는 설치 스크립트에 넣을 수있는 내용이 필요합니다. 오류로 실패합니다. 두 개의 파일 이름을 매개 변수로 사용하는 간단한 CLI 프로그램을 만드는 방법을 알고 있고 DependsOn 함수를 실행하고 그 결과에 따라 출력을 만들 수 있지만 DependsOn 함수를 넣어야할지 모르겠습니다. 아무도 내가 그것을 쓰는 방법에 대해 알고 싶습니까?

+0

가능한 중복 : 또한, 여기에 수동으로 수행하는 (그러나 PE 포맷에 대한 모든 다양한 변종을 알고하는 대신 ImageHlp을 사용합니까) 방법을 보여줍니다 질문입니다 Dll 의존성을 찾을 수있는 도구] (http://stackoverflow.com/questions/352951/command-line-tool-to-find-dll-dependencies) –

+2

왜 빌드 프로세스를 자동화하지 않습니까? 그것은 할 사소한 일이며 많은 시간을 절약 해 주며 실수하지 않는 것을 의미합니다. 의존성을 보면서 시간을 보내는 것은 잘못된 문제를 해결하는 것입니다. 진짜 문제는 반복 가능한 빌드 프로세스가 없다는 것입니다. –

답변

1

PE 가져 오기 테이블을 통해로드 할 때 필요한 DLL을 확인할 수 있습니다. 이것은 Dependency Walker가하는 것이며 Visual Studio에 의해 설치되고 별도의 다운로드로 제공되는 Microsoft Platform SDK에 포함 된 dumpbin 도구입니다. 일부 debughelp API는 PE 헤더의 정보에 대한 액세스를 제공하지만 dumpbin 도구를 호출하고 출력을 검사하지 않는 이유는 무엇입니까? 비대화 형 텍스트 기반이기 때문에 설치 프로그램 빌드 프로세스에 통합하는 것이 매우 간단해야합니다. Dependency Walker also has a capability to run in non-interactive mode with text output.

다른 도구를 사용하지 않고 정보를 검색해야하는 경우 ImageDirectoryEntryToDataEx 기능을 시작하는 것이 좋습니다. [명령 줄의

+0

@MasonWheeler :'dumpbin'은 실제로 Windows SDK의 일부이므로 Visual Studio 없이는 무료로 사용할 수 있습니다. 또는 어떤 툴체인을 사용하는지 알았 으면 그 툴이 번들로 포함되어 있는지 알 수 있습니다. –

+0

저는 Delphi를 사용하고 있습니다. –

+0

@Mason : 죄송합니다. Delphi에 번들 된 도구에 익숙하지 않습니다. 그러나 Dependency Walker에는 CSV 또는 원문 텍스트 형식으로 가져 오기 목록을 내보내는 명령 줄 모드가 있습니다. http://www.dependencywalker.com/help/html/hidr_command_line_help.htm –

관련 문제