【问题标题】:Can't compile with zlib dependency on Windows?无法在 Windows 上使用 zlib 依赖项进行编译?
【发布时间】:2009-12-17 03:56:31
【问题描述】:

我正在尝试通过 MSVC 将使用 zlib 的程序移植到 Windows。不幸的是,经过几个小时的尝试,我似乎无法让任何引用 zlib 的东西运行。

这是我用来测试 zlib 是否可以运行的虚拟程序:

#include <zlib.h>
#include <stdio.h>

int main(void)
{
    z_stream zst;
    zst.zalloc = Z_NULL;
    zst.zfree = Z_NULL;
    zst.opaque = Z_NULL;
    zst.next_out = Z_NULL;
    zst.next_in = Z_NULL;
    zst.avail_out = 0;

    inflateInit(&zst);

    puts("hello, world!");

    return 0;
}

通过将找到的 zlib DLL 归档文件的内容复制到它们各自的 GnuWin32 目录中来安装 zlib 后 here (因为发现 here 的设置似乎包含无效的标头),我尝试使用以下内容编译测试程序:

C:\Documents and Settings\Administrator\My Documents>cl test.c -I"C:\Program Files\GnuWin32\include" "C:\Program Files\GnuWin32\lib\zlib.lib"
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.0 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved

test.c
Microsoft (R) Incremental Linker Version 9.0030729.01
Copyright (C) Microsoft Corporation. All rights reserved.

/out:test.exe
test.obj
"C:\Program Files\GnuWin32\lib/zlib.lib"

然后,当我尝试运行 test.exe 时,我收到一个错误对话框:

此应用程序启动失败 因为没有找到 zlib1.dll。 重新安装应用程序可能会修复 这个问题。

非常感谢任何帮助。

【问题讨论】:

    标签: windows dll visual-c++ zlib


    【解决方案1】:

    听起来你在 GnuWin32 目录中有zlib1.dll?识别zlib1.dll 的最简单方法可能是将其复制到与test.exe 相同的目录中。您还可以下载一个名为 Dependecy Walker 的免费工具,以更好地了解为什么找不到 zlib1.dll

    【讨论】:

      【解决方案2】:

      zlib1.dll 需要与可执行文件位于路径或同一目录中。

      【讨论】:

        【解决方案3】:

        您应该阅读 ZLIB 发行版中包含的 DLL_FAQ.txt 文件,该文件位于 Win32 目录中。它解释了为什么他们使用 ZLIB1.dll 而不是 ZLIB.dll,为什么要进行更改,有什么不同,并让您深入了解可以做出的选择。

        【讨论】:

          【解决方案4】:

          您应该将这些文件(zconf.h 和 zlib.h)复制到 qt 安装文件夹的 MSVC/include/ 文件夹中

          例如,这些文件应该存在: C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtZlib\zlib.h C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include\QtZlib\zconf.h

          【讨论】:

            猜你喜欢
            • 2022-07-08
            • 1970-01-01
            • 2019-11-02
            • 2015-01-02
            • 1970-01-01
            • 2018-09-03
            • 1970-01-01
            • 2021-02-23
            • 1970-01-01
            相关资源
            最近更新 更多