2016-06-10 2 views
1

나는 dll을 참조하는 lib를 참조하는 C++ 프로젝트를 가지고있다. 필자의 경우 모든 필요한 파일 (예 : 어셈블리 등)을 포함하는 설치 패키지를 만들고이 참조 된 어셈블리가 설치 패키지에 포함될 필요가 있습니다.lib가 "참조하는"dll을 결정하는 방법은 무엇입니까?

lib가 참조하는 어셈블리를 알 수있는 방법이 있습니까? 모든 필요한 파일을 식별하기 위해 프로젝트 파일에 액세스하고 읽을 수있는 PowerShell을 실행하지만이 직접 참조 된 어셈블리는 프로젝트 파일 자체의 어딘가에 나열되지 않습니다.

면책 조항 : 그것은

+0

.NET의 경우 [Fuslogvw.exe] (https://msdn.microsoft.com/en-us/library/e74a18c4.aspx) 도구를 사용하여 .NET Framework에서 어셈블리를 찾을 수없는 이유를 진단합니다. 실행 시간 "*. – IInspectable

답변

2

"DUMPBIN는"SDK 도구 프로젝트 네이티브 C++에 올 때 내가 어떤 방법으로 전문가가 아니에요뿐만 아니라 지원하는 다양한 옵션이 있습니다;

  • dumpbin /imports
  • 또는 링커 link /dump /imports

프로젝트에 lib 디렉토리를 구축하는 경우를 통해

은 일단 당신이 종속성을 볼 수 있습니다 "종속성 워커"를 사용할 수 컴파일. 이 파일은 its websiteWindows Driver Kit의 일부로 제공됩니다. 버전이 다를 수 있습니다. 참고; 최신 플랫폼에서의 사용에 유의하십시오 ( as commented below).

일반적으로 SDK 유틸리티는 가장 최신이며 사용중인 대상에 적합합니다.

+1

컴파일 된 출력에도'dumpbin/imports'를 사용할 수 있습니다 (또는'link/dump/imports' - dumpbin과 editbin은 링크 용 래퍼 일뿐입니다) – Rup

+0

.lib에서 작동하지만 좋은 방법을 찾을 수 없습니다 DLL 이름을 얻는 것. 'dumpbin/headers'는 "DLL name"이라는 라인을 포함하는 심볼 임포트마다 구조체를 덤프하지만 grep, sort, uniq을 통해 파이프를 통과시켜야한다고 생각합니다. – Rup

+0

@Rup, 의미가 있습니다. 이러한 도구는 기호를 중심으로 배치 된 후 실행됩니다 (런타임에 필요에 따라로드됩니다). 이것이 Dependency Walker가하는 모든 기능이라고 생각합니다. 기본 메커니즘 전체에 멋진 GUI가 있습니다. – Niall

관련 문제