2009-12-17 63 views
0

我正在尝试将使用zlib的程序移植到使用MSVC的Windows。不幸的是,经过几个小时的尝试后,我似乎无法获得任何引用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档案的内容安装的zlib后发现here到各自的GnuWin32目录(如设置程序中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。 重新安装应用程序可能会修复 此问题。

任何帮助将非常感激。

回答

0

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

0

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

0

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

相关问题