myf*_*wik 10 c windows mingw zlib
我似乎无法让zlib对windows下的mingw做任何事情.
我下载了zlib @ http://sourceforge.net/projects/mingw/files_beta/MinGW/zlib/zlib-1.2.3-1-mingw32/,并将头文件和lib文件放在正确的位置.
简单的代码如:
#include <stdlib.h>
#include <stdio.h>
#include "zlib.h"
int main(int argc, char *argv[])
{
long a;
char buffer[1024];
a = 1024;
compress(buffer,&a,"testing",7);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译:
gcc test.c -lzlib -Wall -o test.exe
Run Code Online (Sandbox Code Playgroud)
编译好.然而,exe在压缩功能崩溃.有任何想法吗?
我建议对此类事情使用MSYS2。这些说明假定您要编译64位程序,但是可以很容易地将它们修改为32位。
安装MSYS2后,在“开始”菜单中运行“ MinGW-w64 Win64 Shell”快捷方式。通过运行以下命令来安装64位工具链:
pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-zlib
Run Code Online (Sandbox Code Playgroud)
然后通过运行如下代码来编译代码:
gcc test.c -lz -o test
Run Code Online (Sandbox Code Playgroud)
我没有仔细检查您的代码,但是我能够运行您的代码而不会崩溃,因此您的代码可能还可以。您的代码也没有输出,因此很难判断它是否真正起作用。
小智 0
查看 zlib 手册,它说:
Run Code Online (Sandbox Code Playgroud)ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen));将源缓冲区压缩到目标缓冲区。sourceLen 是源缓冲区的字节长度。输入时,destLen 是目标缓冲区的总大小,它必须至少是 compressBound(sourceLen) 返回的值。退出时,destLen 是压缩缓冲区的实际大小。
也许还a=1024不够大?我认为你需要打电话compressBound来获取合适的值。
| 归档时间: |
|
| 查看次数: |
16021 次 |
| 最近记录: |