【问题标题】:How do I merge zlib1.dll into my executable in C?如何将 zlib1.dll 合并到 C 中的可执行文件中?
【发布时间】:2010-05-08 13:46:18
【问题描述】:

我的可执行文件需要zlib1.dll 才能运行,

我需要时不时地把它们放在一起。

如何将其合并到可执行文件中以节省麻烦?

我正在使用 cmake 构建可执行文件。

更新

zlib1.dll 不直接包含在我的程序中,但 libpng14-14.dll 需要(gtk 包的一个 dll)

【问题讨论】:

    标签: c dll cmake


    【解决方案1】:

    听起来您想要静态链接,以便您的程序不需要zlib1.dll 的存在即可运行。但是zlib1.dll 是一个动态 链接库(这就是DLL 的含义!),所以你不能静态链接它。您需要做的第一件事是找到这个库的 static 版本。在 Windows 上,它通常以 .lib 扩展名结尾。

    我不熟悉 cmake,所以我会让其他人回答关于如何让 cmake 使用静态库的部分问题,一旦你拥有两者。

    【讨论】:

    • 如果不需要cmake怎么办?
    • 取决于你的编译器。
    【解决方案2】:

    对不起,没有办法混合它。您必须静态或动态地编译和链接。我试过了 - 它不起作用。

    所以如果 libpng.dll 需要一个 zlib.dll 你不能把 zlib 变成一个静态库。您还必须将 libpng 编译为静态库。

    我已经这样做了几次,来自 PNG、ZLIB 的 makefile(以及 JPEG、TIFF 图像格式库)非常好。如果您需要超过 30 分钟的时间来弄清楚该做什么,您应该将其视为对您的 C makefile 技能的良好培训。

    【讨论】:

    • 不知道zlib1.dll是通过LoadLibrary链接还是加载库链接,如果是后者,则可以修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2015-03-28
    相关资源
    最近更新 更多