2016-04-14 8 views
2

Ich versuche, die zxing library ported to C++ auf Windows 7 (64) unter Verwendung von Visual Studio 2015Libconv kann nicht Argument konvertieren beim Kompilieren ZXing

Ich folgte den Schritten auf Readme beschrieben zu kompilieren Cmake mit der SLN und .vcxproj zu erzeugen Dateien.

Jedoch, wenn ich den Code bauen erhalte ich diese Fehlermeldung:

Severity Code Description Project File Line Suppression State Error C2664 'size_t libiconv(libiconv_t,const char **,size_t *,char **,size_t *)': cannot convert argument 2 from 'char **' to 'const char **'

an der Linie:

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

Und hier ist ein Teil des Codes hier der Fehler passiert:

#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 
} 
... 

Danke für Ihre Hilfe!

Antwort

0

Dies ist die Unterschrift von iconv:

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

Aber Sie nennen iconv mit einem char* als zweiten Parameter anstelle eines const char**.

Here is a complete example.

+0

Also habe ich die Variable als 'const char * ss;' und es funktionierte, aber ich weiß nicht, ob dies der richtige Weg ist, dies zu tun. Hast du noch andere Vorschläge? Übrigens, danke für deine Hilfe! –