C++ 有没有办法搜索和复制所有DLL依赖项?

C++ 有没有办法搜索和复制所有DLL依赖项?,c++,windows,installation,setup-deployment,C++,Windows,Installation,Setup Deployment,正如我们所知道的,当试图运行一个缺少一些依赖DLL的程序时,系统会抱怨“缺少DLL”错误。我用来避免这种情况的方法是将所有依赖的DLL打包到安装程序中,这样软件就可以在其他设备上运行。然而,随着依赖DLL数量的不断增加,手动搜索和复制DLL变得非常麻烦,特别是考虑到这些直接依赖的DLL可能有自己的依赖关系 我知道,并跟踪DLL的依赖关系。但是它们只列出依赖的DLL。我想知道是否有任何命令/脚本/工具可以: 递归搜索可执行文件的依赖DLL 将这些依赖项复制到指定目录 最好支持从指定目录中排除DLL

正如我们所知道的,当试图运行一个缺少一些依赖DLL的程序时,系统会抱怨“缺少DLL”错误。我用来避免这种情况的方法是将所有依赖的DLL打包到安装程序中,这样软件就可以在其他设备上运行。然而,随着依赖DLL数量的不断增加,手动搜索和复制DLL变得非常麻烦,特别是考虑到这些直接依赖的DLL可能有自己的依赖关系

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

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

  • 老实说,我不知道这种事情是否曾经存在过。如果没有,你们怎么处理这个DLL问题

    在此链接下,我一直在使用InstallAware Express CodeGear Edition

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

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