【发布时间】:2010-05-08 13:46:18
【问题描述】:
我的可执行文件需要zlib1.dll 才能运行,
我需要时不时地把它们放在一起。
如何将其合并到可执行文件中以节省麻烦?
我正在使用 cmake 构建可执行文件。
更新
zlib1.dll 不直接包含在我的程序中,但 libpng14-14.dll 需要(gtk 包的一个 dll)
【问题讨论】:
我的可执行文件需要zlib1.dll 才能运行,
我需要时不时地把它们放在一起。
如何将其合并到可执行文件中以节省麻烦?
我正在使用 cmake 构建可执行文件。
更新
zlib1.dll 不直接包含在我的程序中,但 libpng14-14.dll 需要(gtk 包的一个 dll)
【问题讨论】:
听起来您想要静态链接,以便您的程序不需要zlib1.dll 的存在即可运行。但是zlib1.dll 是一个动态 链接库(这就是DLL 的含义!),所以你不能静态链接它。您需要做的第一件事是找到这个库的 static 版本。在 Windows 上,它通常以 .lib 扩展名结尾。
我不熟悉 cmake,所以我会让其他人回答关于如何让 cmake 使用静态库的部分问题,一旦你拥有两者。
【讨论】:
对不起,没有办法混合它。您必须静态或动态地编译和链接。我试过了 - 它不起作用。
所以如果 libpng.dll 需要一个 zlib.dll 你不能把 zlib 变成一个静态库。您还必须将 libpng 编译为静态库。
我已经这样做了几次,来自 PNG、ZLIB 的 makefile(以及 JPEG、TIFF 图像格式库)非常好。如果您需要超过 30 分钟的时间来弄清楚该做什么,您应该将其视为对您的 C makefile 技能的良好培训。
【讨论】:
LoadLibrary链接还是加载库链接,如果是后者,则可以修复。