e.exe
與我的自定義靜態庫c.lib
鏈接,該庫使用在w.dll
中定義的Win32 API。 w.dll
位於C:\ Windows \ System32,其導入庫爲w.lib
,位於Windows SDK目錄中。殼牌w.lib
被列爲附加依賴在c.lib
或e.exe
項目? (e.exe
在這兩種情況下都能成功建立。)最佳做法是什麼?爲什麼?我猜e.exe
不應該知道關於w.lib
。具有相關性的靜態庫
c.lib
旨在僅由一組開發人員共享(不會發送給客戶)。
TEST:我用VS2008和DUMPBIN實用程序來測試這兩種情況下,這裏是結果:
- 案例1:
w.lib
添加附加依賴在c.lib
項目。
dumpbin /archivemembers c.lib
輸出列出了從c.lib
項目作爲歸檔成員w.dll
都偏移和.obj文件。
- 案例2:
w.lib
不c.lib
但e.exe
項目添加其他相關:
這一次,DUMPBIN輸出僅包含c.lib
.obj文件和c.lib
尺寸小於在情況1中
(c.lib
被添加爲附加依賴性在w.exe
項目在這兩種情況下)
注意:我用w.lib
和w.dll
這裏虛構,通用名稱爲Windows庫,但他們可能是如Userenv.lib和Userenv.dll或Version.lib和Version.dll ...
謝謝您的全面解答。我最初的推定是錯誤的 - 我認爲這是可取的exe不知道lib的依賴關係,但現在當我從* import library + code *的角度來看待它時,讓exe知道它的代碼是什麼包括來自靜態庫的代碼)依賴於。 – 2011-01-10 14:33:07