Search code examples
c++windowsmingwiconv

c++ using of iconv on Windows with Mingw compiler


Good time of day!

I compiled this code with g++ 4.7.2 on Ubuntu successfully, but I have problems with compiling it on Windows with Mingw.

Simplified Code:

 size_t string_length=some_size;
 char arr_symb[string_length+1];

 char *outputde=arr_symb;
 iconv_t type=iconv_open("UTF-8","WINDOWS-1251");

char output[some_size];

char *p1=arr_symb;
char *p2=output;

if (   iconv(type, &p1,&string_length, &p2, &output_length ) == -1 )// here 
        // is mistake, it doesn't like pointers p1 and p2 but I wonder why

  log_info("something went wrong");

On Linux with G++ it can be compiled and works fine as it should. With Mingw I get errors:

enter image description here

I wonder, if it works fine with g++ , why does mingw treat it like it's mistaken?

Thanks in advance!

ADDITION
My Mingw version is 4.4.0
GCC version is 4.7.2


Solution

  • Thanks all for your attention, problem is solved, but it's all strange to me (it's still unclear )

    Although the function has such prototype,

    enter image description here

    With MinGW it should be called so:

    enter image description here

    So, the problem is that input string for MinGW should be passed as constant (also it doesn't have such prototype).