c++ 在Windows 上使用带有Mingw 编译器的iconv

标签 c++ windows mingw iconv

一天中的好时光!

我在 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 我得到错误:

enter image description here

我想知道,如果它与 g++ 一起工作正常,为什么 mingw 将其视为错误?

提前致谢!

添加
我的Mingw版本是4.4.0
GCC版本为4.7.2

最佳答案

感谢大家的关注,问题解决了,但我还是很奇怪(目前还不清楚)

虽然函数有这样的原型(prototype),

enter image description here

对于 MinGW,它应该这样称呼:

enter image description here

所以,问题是 MinGW 的输入字符串应该作为常量传递(而且它没有这样的原型(prototype))。

关于c++ 在Windows 上使用带有Mingw 编译器的iconv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14148814/

相关文章:

c - C 中的 "CALLBACK"声明有什么作用?

C++ - 使控制台全屏显示?

c++ - 最有效的资源存储方式

c++ - 如何以可移植的方式在 C++ 中删除名称为 wchar_t 类型的文件?

C++ goto(而不是继续)句法古怪

c++ - 扩展包含静态函数的类

C++ - EncryptMessage 没有加密正确的数据

c# - 检查 winform 是否隐藏在以独占全屏模式运行的游戏后面

c++ - 运行 .exe 时出错

c++ - 减少与 opencv 静态链接的可执行文件的大小