如何查看Windows中的静态库依赖?

How to check the static library dependencies in Windows?

我在一个大项目中有这样的依赖:

MyEXE --> MyDLL --> MyStaticLib

这意味着我的可执行文件 (MyEXE) 依赖于一个 dll (MyDLL) 并且 dll 使用静态库 (MyStaticLib)。问题是我可以从 MyEXE 调用 MyStaticLib 方法,它可以毫无问题地编译和链接。我检查了 MyEXE 项目的 Visual Studio (2015) 上的 Linker/Input 页面,但我找不到 MyStaticLib 作为依赖项之一MyEXE 个。

现在的问题是:

  1. MyEXE如何在没有任何显式依赖的情况下调用 MyStaticLib 方法?
  2. Windows 上是否有任何工具可以列出可执行文件使用的所有静态库? (这里是a solution for Linux

更新 1:MyStaticLib 的 headers 中没有 #pragma comment(lib, ...) 指令。因此,无法使用此指令将静态库链接到 .exe。

MSVC 至少有一个隐式依赖机制,通过#pragma comment(lib, ...) 指令完成。检查静态库的 headers 并确保没有这样的。

此外,如果使用通过 'vcpkg' 提供的静态库并且您已完成 "vcpkg integrate install",则会将 MSBuild 文件添加到项目构建系统,自动导入 vcpkg 生成的所有内容。

此外,link.exe 有一个 /VERBOSE:LIB 选项,可以打印出搜索到的库,但它不会告诉您为什么将特定库添加到构建中。