我刚开始使用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编译器解决了这个问题
我希望这会有所帮助。
stdio.h
和libmingwex.a
有vsnprintf
多个定义。 我可以通过在代码的开始处添加#define __USE_MINGW_ANSI_STDIO 0
,在任何包含之前禁用stdio.h
中vsnprintf
的定义。