如何将库合并到可执行文件中,以便用户不需要 DLL?

How can I incorporate libraries into my executable, so that users don't need to have the DLLs?

本文关键字:用户 不需要 DLL 合并 可执行文件      更新时间:2023-10-16

我正在使用ITK和VTK开发软件,一切都进展顺利。 但是,我想将软件部署到未安装 ITK 或 VTK 的最终用户计算机上。 当我构建软件并在未安装 ITK 或 VTK 的计算机上运行它时,我收到错误,例如"无法加载 libItkBasicFilters.dll"这是完全有道理的 - 机器上没有这样的 DLL。

我不能指望我的所有用户都安装 ITK 以便他们可以运行我的软件 - 我怎样才能让他们只需要运行我的可执行文件,他们就可以享受该软件? 恐怕我对这些库的了解还不够好——所以如果你能给我任何想法,那将是非常有帮助的。

您有两个选择:

  1. 将这些库的安装程序添加到安装程序中,并在系统上找不到库时自动运行它。如果您有安装程序,这就是通常的做法,在这种情况下是首选选项。
  2. 使用库的静态版本。由于库使用 BSD 许可证,因此您可以执行此操作(如果您还没有静态库,只需将它们重新编译为静态库)。但是,如果需要更新库,它将占用目标计算机上的更多空间,并且需要重新安装软件(可以在不重新编译依赖应用程序的情况下更新.dlls以进行错误或安全问题修复),但是如果您希望用户只是获取.exe并启动它,这是唯一的选择。