一天中的好时光!
我在 Ubuntu 上用 g++ 4.7.2 成功编译了这段代码,但在 Windows 上用 Mingw 编译它时遇到问题。
简化代码:
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");
在带有 G++ 的 Linux 上,它可以编译并正常工作。使用 Mingw 我得到错误:
我想知道,如果它与 g++ 一起工作正常,为什么 mingw 将其视为错误?
提前致谢!
添加
我的Mingw版本是4.4.0
GCC版本为4.7.2
最佳答案
感谢大家的关注,问题解决了,但我还是很奇怪(目前还不清楚)
虽然函数有这样的原型(prototype),
对于 MinGW,它应该这样称呼:
所以,问题是 MinGW 的输入字符串应该作为常量传递(而且它没有这样的原型(prototype))。
关于c++ 在Windows 上使用带有Mingw 编译器的iconv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14148814/