如何查看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
个。
现在的问题是:
MyEXE
如何在没有任何显式依赖的情况下调用 MyStaticLib
方法?
- 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 选项,可以打印出搜索到的库,但它不会告诉您为什么将特定库添加到构建中。
我在一个大项目中有这样的依赖:
MyEXE --> MyDLL --> MyStaticLib
这意味着我的可执行文件 (MyEXE
) 依赖于一个 dll (MyDLL
) 并且 dll 使用静态库 (MyStaticLib
)。问题是我可以从 MyEXE
调用 MyStaticLib
方法,它可以毫无问题地编译和链接。我检查了 MyEXE
项目的 Visual Studio (2015) 上的 Linker/Input 页面,但我找不到 MyStaticLib
作为依赖项之一MyEXE
个。
现在的问题是:
MyEXE
如何在没有任何显式依赖的情况下调用MyStaticLib
方法?- 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 选项,可以打印出搜索到的库,但它不会告诉您为什么将特定库添加到构建中。