簡體   English   中英

如何檢查 Windows 中的靜態庫依賴項?

[英]How to check the static library dependencies in Windows?

我在一個大項目中有這樣的依賴:

MyEXE --> MyDLL --> MyStaticLib

這意味着我的可執行文件 ( MyEXE ) 依賴於 dll ( MyDLL ),而 dll 使用靜態庫 ( MyStaticLib )。 問題是我可以從MyEXE調用MyStaticLib方法,它編譯和鏈接沒有任何問題。 我檢查了MyEXE項目的 Visual Studio (2015) 上的鏈接器/輸入頁面,但我找不到MyStaticLib作為MyStaticLib的依賴項MyEXE

現在的問題是:

  1. MyEXE如何在沒有任何顯式依賴的情況下調用MyStaticLib方法?
  2. Windows 上是否有任何工具可以列出可執行文件使用的所有靜態庫? (這里是Linux 的解決方案

更新 1: MyStaticLib 的標題中沒有#pragma comment(lib, ...)指令。 因此,不能使用此指令將靜態庫鏈接到 .exe。

MSVC 至少有一個隱式依賴機制,通過 #pragma comment(lib, ...) 指令完成。 檢查靜態庫的頭文件並確保沒有這樣的頭文件。

此外,如果使用通過“vcpkg”提供的靜態庫並且您已完成“vcpkg集成安裝”,則會將 MSBuild 文件添加到項目構建系統中,該文件會自動導入 vcpkg 生成的所有內容。

此外,link.exe 有一個 /VERBOSE:LIB 選項,它將打印出搜索到的庫,但它不會告訴您為什么將特定庫添加到構建中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM