编译zxing时,Libconv无法转换参数

Libconv cannot convert argument when compiling zxing

本文关键字:转换 参数 Libconv zxing 编译      更新时间:2023-10-16

我正在尝试编译移植到C的zxing库++在Windows 7(64)上使用Visual Studio 2015。

我按照Readme中描述的步骤使用Cmake生成.sln和.vcxproj文件。

然而,当我构建代码时,我得到了这个错误:

严重性代码描述项目文件行禁止显示状态错误C2664"size_t libiconv(libiconv_t,const char**,size_t*,char**,size _t*)":无法将参数2从"char**"转换为"const char***"

在线路上:

    iconv(ic, &ss, &sl, &ds, &dl);

这是发生错误的代码的一部分:

#include <zxing/aztec/decoder/Decoder.h>
#ifndef NO_ICONV 
#include <iconv.h>
#endif
#include <iostream>
#include <zxing/FormatException.h>
#include <zxing/common/reedsolomon/ReedSolomonDecoder.h>
#include <zxing/common/reedsolomon/ReedSolomonException.h>
#include <zxing/common/reedsolomon/GenericGF.h>
#include <zxing/common/IllegalArgumentException.h>
#include <zxing/common/DecoderResult.h>
using zxing::aztec::Decoder;
using zxing::DecoderResult;
using zxing::String;
using zxing::BitArray;
using zxing::BitMatrix;
using zxing::Ref;
using std::string;

namespace {
 void add(string& result, char character) {
#ifndef NO_ICONV
  char character2 = character & 0xff;
  char s[] =  {character2};
  char* ss = s;
  size_t sl = sizeof(s);
  char d[4];
  char* ds = d;
  size_t dl = sizeof(d);
  iconv_t ic = iconv_open("UTF-8", "ISO-8859-1");
  iconv(ic, &ss, &sl, &ds, &dl); //<<<< at this line
  iconv_close(ic);
  d[sizeof(d)-dl] = 0;
  result.append(d);
#else
  result.push_back(character);
#endif
}
...

谢谢你的帮助!

这是iconv:的签名

size_t iconv (iconv_t cd,
              const char* * inbuf, size_t * inbytesleft,
              char* * outbuf, size_t * outbytesleft);

但调用iconv时,第二个参数是char*,而不是const char**

下面是一个完整的例子。