2010-07-13 22 views
0

當鏈接可執行文件時,如果它沒有引用鏈接行上某個DLL中的任何符號,它在運行時是否仍依賴於該DLL?在鏈接行上包含額外的庫

爲了使問題具體化,假設我從Visual Studio項目foo構建應用程序。

在項目屬性>鏈接>輸入>其他我已指定bar.lib,導入庫bar.dll,即使它沒有成功鏈接foo.exe需要的依賴。

我是否仍然需要將bar.dll與我的應用程序分配,因爲我已將其標記爲鏈接依賴項?

+0

如果鏈接器在做它的工作正常,那麼它應該忽略未被引用的dll。有一個簡單的方法來測試這個,創建一個這樣的項目,然後看看它是否運行,如果你刪除'bar.dll'。 – ChrisF 2010-07-13 21:17:06

+0

或者使用dependency walker(http://www.dependencywalker.com/)來查看你的應用程序是否列出了DLL。 – 2010-07-13 21:19:26

回答

1

不,這不是必需的。

導入庫只有一個庫,EXE將只包含對所用函數的引用。通過驗證這一點,您可以使用DUMPBIN.EXE實用程序或依賴關係walker(請參閱http://www.dependencywalker.com/),它們是Visual Studio軟件包的一部分。只需鍵入DUMPBIN.EXE foo.exe /imports或使用依賴關係walker打開foo.exe。