MinGW g++:使用 to_string 时 vsnprintf 的多重定义
MinGW g++: Multiple definition of vsnprintf when using to_string
我刚开始使用 MinGW Windows。尝试使用
创建可执行文件时
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
这个错误的根本原因是什么?我怎样才能让它消失?虽然我可以很容易地找到 to_string()
函数的替代品,但我不确定首先导致此错误发生的原因。
我使用 MinGW w64 编译器解决了这个问题
- 下载mingw-w64-install.exe
- 设置为版本:6.3.0,体系结构:i686,线程:posix,异常:dwarf 和构建版本:2.
希望对您有所帮助。
vsnprintf
在stdio.h
和libmingwex.a
中都有多个定义。我可以通过在代码的开头添加 #define __USE_MINGW_ANSI_STDIO 0
来解决这个问题,在任何包含之前,这会禁用 stdio.h
.
中 vsnprintf
的定义
安装 MinGW
软件包 mingw32-libmingwex-*
将 link 一个合适的 vsnprintf
版本并避免 link 错误。
这个问题,即 multiple definition of vsnprintf
,在 2019 年 12 月 MinGW 中仍然存在。
经过大量调查后,我在 official mailing list 中找到了解决方案。
这是 mingwrt-5.2.2
中的错误。降级到 mingwrt-5.2.1
版本可以解决该问题。
为此,只需输入以下命令:
mingw-get upgrade mingwrt=5.2.1
然后重启MinGW shell。
注意: MinGW-w64 和 MinGW 是独立的项目,所以接受的解决方案对我帮助不大,因为我想保留 MinGW 而不是迁移到 MinGW- w64.
我刚开始使用 MinGW Windows。尝试使用
创建可执行文件时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
这个错误的根本原因是什么?我怎样才能让它消失?虽然我可以很容易地找到 to_string()
函数的替代品,但我不确定首先导致此错误发生的原因。
我使用 MinGW w64 编译器解决了这个问题
- 下载mingw-w64-install.exe
- 设置为版本:6.3.0,体系结构:i686,线程:posix,异常:dwarf 和构建版本:2.
希望对您有所帮助。
vsnprintf
在stdio.h
和libmingwex.a
中都有多个定义。我可以通过在代码的开头添加 #define __USE_MINGW_ANSI_STDIO 0
来解决这个问题,在任何包含之前,这会禁用 stdio.h
.
vsnprintf
的定义
安装 MinGW
软件包 mingw32-libmingwex-*
将 link 一个合适的 vsnprintf
版本并避免 link 错误。
这个问题,即 multiple definition of vsnprintf
,在 2019 年 12 月 MinGW 中仍然存在。
经过大量调查后,我在 official mailing list 中找到了解决方案。
这是 mingwrt-5.2.2
中的错误。降级到 mingwrt-5.2.1
版本可以解决该问题。
为此,只需输入以下命令:
mingw-get upgrade mingwrt=5.2.1
然后重启MinGW shell。
注意: MinGW-w64 和 MinGW 是独立的项目,所以接受的解决方案对我帮助不大,因为我想保留 MinGW 而不是迁移到 MinGW- w64.