【问题标题】:Is there any way to search and copy all the DLL dependencies?有没有办法搜索和复制所有的 DLL 依赖项?
【发布时间】:2020-06-28 07:02:18
【问题描述】:

我们知道,当尝试运行缺少一些依赖 DLL 的程序时,系统会抱怨“缺少 dll”错误。我用来避免这种情况的方法是将所有依赖的 DLL 打包到安装程序中,以便该软件可以在其他设备上运行。然而随着依赖的DLL越来越多,手动搜索和复制DLL变得如此繁琐,尤其是考虑到这些直接依赖的DLL可能有自己的依赖关系。

我知道dumpbinDependency WalkerDependencies 可以跟踪 DLL 依赖关系。但他们只列出了依赖的 DLL。我想知道是否有任何命令/脚本/工具可以:

  1. 递归搜索可执行文件的依赖 DLL
  2. 将这些依赖项复制到指定目录
  3. 最好支持从指定目录中排除DLL,如C:\WINDOWS\system32\

说实话,我不知道这种事情是否存在。如果没有,你们如何处理这个 DLL 问题?

【问题讨论】:

  • 实际上想解决什么问题?这对我来说就像一个XY Problem
  • 该工具不存在。它不能存在,因为并非所有依赖项都可以静态发现。 如何处理这个问题?我设置了 CI,并确保在干净的系统上测试安装程序。
  • @Jabberwocky 好吧,我想做的是以安装程序的形式发布我的软件。显然,我不希望用户在安装后尝试运行软件时遇到“缺少 DLL”错误。为了达到这个目标,我使用 Dependencies 来找出 DLL 依赖项,手动将这些 DLL 复制出来,然后将它们添加到我的安装程序项目中。它确实解决了我的问题,但这样的过程既乏味又容易出错。所以,我的问题可以概括为,在尝试发布 EXE 时,有没有更好的方法来处理 DLL 依赖关系?
  • 因为它是您想要安装的您的软件,已经知道您的软件使用了哪些dll。只需分发这些 dll。对于各种系统 dll,您可能需要以 Microsoft redistributables 的形式分发它们。
  • 只是检查你是否见过this answerProcmonNDepend 应该值得一看高级依赖调试。

标签: c++ windows installation setup-deployment


【解决方案1】:

我一直在这个链接http://cc.embarcadero.com/Item/24997下使用InstallAware Express CodeGear Edition

它不再继续。但是那里有一个菜单,它可以找到并定位依赖的 dll 或 bpl 文件,然后您创建一个快速而肮脏的安装项目,所有这些都复制到一个文件夹中。比您可以将它们用于您的应用程序。这不再适合我,我也在寻找另一种工具。 如果你发现了什么,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 2013-05-26
    • 2021-04-30
    • 2016-07-31
    相关资源
    最近更新 更多