MinGW g ++:使用to_string时vsnprintf的多重定义

我刚开始使用MinGW for Windows。 当试图创build可执行文件使用

g++ a.cpp -o a.exe -std=c++14

代码如下:

 #include <string> using namespace std; int main() { string x = to_string(123); return 0; } 

我得到以下错误:

 C:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../libmingwex.a(vsnprintf.o):(.text+0x0): multiple definition of vsnprintf C:\Users\..\Local\Temp\cc4sJDvK.o:c:/mingw/include/stdio.h:426: first defined here collect2.exe: error: ld returned 1 exit status 

这个错误的根本原因是什么,如何让它消失? 虽然我可以很容易地find替代to_string()函数,我不知道是什么原因造成这个错误发生的第一个地方。

我使用MinGW w64编译器解决了这个问题

  1. 下载mingw-w64-install.exe
  2. 安装到版本:6.3.0,体系结构:i686,线程:posix,例外:矮人和建造版本:2。

我希望这会有所帮助。

stdio.hlibmingwex.avsnprintf多个定义。 我可以通过在代码的开始处添加#define __USE_MINGW_ANSI_STDIO 0 ,在任何包含之前禁用stdio.hvsnprintf的定义。