我有一个.cpp
文件,其中包含以下函数,可通过zlib
解压缩文件:
#include <zlib.h>
#include <fstream>
bool gzip_uncompress(std::string &compressed_file_path,std::string &uncompressed_file_path)
{
char outbuffer[1024*16];
gzFile infile = (gzFile)gzopen(compressed_file_path, "rb");
FILE *outfile = fopen(uncompressed_file_path, "wb");
gzrewind(infile);
while(!gzeof(infile))
{
int len = gzread(infile, outbuffer, sizeof(outbuffer));
fwrite(outbuffer, 1, len, outfile);
}
fclose(outfile);
gzclose(infile);
return true;
}
这看起来应该运行给我,但我收到编译时错误说明:
No matching function call to 'gzopen'
和
No matching function call to 'fopen'
我能做的唯一事情就是我在C++
文件中调用它们,而zlib
是C
库。我不确定fopen
错误。
有谁看到我如何调用这些函数并解决编译错误?
我也试过了:
extern "C" {
#include <zlib.h>
}
但仍然没有去。我吠叫错了树吗?我应该将此功能移动到C
文件中吗?但是我可能会遇到同样的问题。
答案 0 :(得分:2)
在将.c_str()
传递给期望std::string
的函数时使用char *
。
答案 1 :(得分:-2)
这里有两件事......
对于第一个问题,你的编译器无法看到gzopen的声明,可能有很多原因..
请检查zlib.h中函数gzopen的声明
确保您需要在g ++的参数中包含zlib.h的路径
例如:-I/usr/local/include/zlib.h
请点击以下链接获取开发者文档 http://www.zlib.net/manual.html 请按照帮助
对于2.将您的C ++程序与zlib链接,请使用
extern "C" {
#include <zlib.h>
}