【问题标题】:Function to_string() was not resolved using g++ mingw--w64 5.3.0使用 g++ mingw--w64 5.3.0 未解析函数 to_string()
【发布时间】:2016-07-28 01:30:05
【问题描述】:

在 Eclipse 中,我使用 mingw-w64 V5.3.0 作为编译器,并且启用了 C++11(这是以下相关帖子 herehere 中的解决方案)。我的编译命令如下(来自 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运行代码时收到的错误:

正如 cmets 中所述,该问题是一个链接问题,但它正确链接到与 string 位于同一目录中的 iostream

【问题讨论】:

  • 它编译得很好,但是有错误?你能告诉我们实际的错误吗?
  • 是的,它编译得很好,但是我的意思是一个错误,我现在已经在文本中更正了。我将显示一个屏幕截图
  • 输出控制台的错误(作为文本)最好。
  • 啊,没有。控制台没有显示错误,屏幕截图很快就附上了
  • 奇怪的是你使用了 2 个标准,C++0x C++11。

标签: c++ eclipse c++11


【解决方案1】:

Eclipse 在 System32 中查找库和驱动程序文件,尽管 PATH 和 Eclipse 指向计算机上的 MingW64 编译器。 Eclipse 还显示它已正确链接到 MingW64 库,因为当右键单击并打开减速显示为正确时,标题的路径是正确的。为什么它会在运行时在 System32 中查找库,我不明白。

问题已通过将整个 MingW64 编译器驱动程序文件夹复制到 Windows 上的 System32 文件夹中“解决”。

【讨论】:

  • 哎呀!我会检查eclipse是否配置为覆盖项目属性中的一些环境变量。如果您真的无法修复您的环境,另一种方法是静态链接 libstdc++。
猜你喜欢
  • 2022-06-13
  • 1970-01-01
  • 2022-09-30
  • 2019-01-01
  • 2017-09-03
  • 2012-10-10
相关资源
最近更新 更多