【问题标题】:Including extra libraries on the link line在链接行包括额外的库
【发布时间】:2010-07-13 21:14:09
【问题描述】:

当链接一个可执行文件时,如果它没有引用链接行上某个 DLL 中的任何符号,它在运行时是否仍依赖于该 DLL?

为了使问题具体化,假设我正在从 Visual Studio 项目 foo 构建一个应用程序。

在项目属性>链接器>输入>附加依赖项下我指定了bar.libbar.dll的导入库,即使不需要成功链接foo.exe

由于我已将bar.dll 标记为链接依赖项,我还需要将其与我的应用程序一起分发吗?

【问题讨论】:

  • 如果链接器正常工作,那么它应该忽略未引用的 dll。有一个简单的方法来测试这个,创建这样一个项目,然后看看它是否运行如果你删除bar.dll
  • 或使用dependency walker (dependencywalker.com) 来查看您的应用程序是否列出了该DLL。

标签: c++ windows visual-studio dll linker


【解决方案1】:

不,这不是必需的。

导入库只是一个库,EXE 将只包含对所使用函数的引用。顺便说一句,您可以使用 DUMPBIN.EXE 实用程序或依赖项walker(请参阅http://www.dependencywalker.com/),它们是 Visual Studio 包的一部分。只需输入 DUMPBIN.EXE foo.exe /imports 或使用依赖项walker 打开 foo.exe。

【讨论】:

    猜你喜欢
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多