【问题标题】:Libconv cannot convert argument when compiling zxingLibconv 在编译 zxing 时无法转换参数
【发布时间】:2016-08-06 04:16:12
【问题描述】:

我正在尝试使用 Visual Studio 2015 在 Windows 7 (64) 上编译 zxing library ported to C++

我按照自述文件中描述的步骤使用 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
}
...

感谢您的帮助!

【问题讨论】:

    标签: c++ windows visual-studio zxing iconv


    【解决方案1】:

    这是iconv的签名:

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

    但是您调用iconv 时使用char* 作为第二个参数而不是const char**

    Here is a complete example.

    【讨论】:

    • 所以,我将变量声明为const char *ss; 并且它有效,但我不知道这是否是正确的方法。你有什么其他的建议?顺便说一句,谢谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2013-11-22
    相关资源
    最近更新 更多