在 Eclipse 中,我使用 mingw-w64 V5.3.0 作为编译器,并且启用了 C++11(这是以下相关帖子中的解决方案 here 和 here)。我的编译命令如下所示(来自 eclipse 控制台窗口):
g++ -std=c++11 -O0 -g3 -Wall -c -fmessage-length=0 -o "src\Launch.o""..\src\Launch.cpp"
我尝试运行的简单代码如下:
#include <stdio.h>
#include <iostream>
#include <string>
int main()
{
std::string test = std::to_string(0);
std::cout <<"HI" << std::endl;
return 0;
}
程序编译但出现问题中所述的错误。在没有 to_string
行的情况下运行它可以正常工作。早在 2012 年就有人提出 MingW 的 to_string() 有问题,但在后来的版本中得到解决,显示为 here .
下面的屏幕截图:
控制台输出如下:
以下是我直接从 .exe 运行代码时收到的错误:
如评论中所述,该问题是一个链接问题,但它正确链接到与 string
位于同一目录中的 iostream
。
最佳答案
Eclipse 正在 System32 中查找库和驱动程序文件,尽管 PATH 和 Eclipse 指向计算机上的 MingW64 编译器。 Eclipse 还显示它已正确链接到 MingW64 库,因为当右键单击和打开减速显示正确时, header 的路径是正确的。为什么它会在运行时在 System32 中查找库,我不明白。
通过将整个 MingW64 编译器驱动程序文件夹复制到 Windows 上的 System32 文件夹中,问题已“解决”。
关于c++ - 函数 to_string() 未使用 g++ mingw --w64 5.3.0 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36471568/