从c++文件调用zlib (C代码)
Calling zlib (C code) from a C++ file
我有一个.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
文件中吗?但我可能也有同样的问题
在传递std::string
给需要char *
的函数时使用.c_str()
这里有两件事…
- 编译时c++文件中包含的C头文件 链接C编译库(zlib)与c++程序
对于第一个问题,你的编译器无法看到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>
}
相关文章:
- 为char数组调整zlib-zpipe
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 从c++文件调用zlib (C代码)
- 无法在qmake Qt项目中使用静态zlib库中的代码