Ubuntu 14.04 上的 Eclipse C++ 找不到字符串的 stod()

Eclipse C++ on Ubuntu 14.04 cannot find string's stod()

如果 C++ 程序包含对字符串函数 stod() 的调用,则 Elipse 无法在我的系统上构建这些程序。我是 运行 Ubuntu 14.04,Eclipse 使用 C/C++ 透视图。

我已经包含了头文件,并使用 -std=c++11 编译标志进行编译,并将编译器从 gcc 设置为 g++,但它没有用。我还尝试使用 Eclipse 的 "ISO C++11" 方言设置(它将编译标志设置为 -std=c++0x。在所有情况下,编译器都无法看到 stod 函数。

为了找出问题所在,我从 cplusplus.com 网站为 stod 编译了示例:

// stod example
#include <iostream>   // std::cout
#include <string>     // std::string, std::stod

int main ()
{
  std::string orbits ("365.24 29.53");
  std::string::size_type sz;     // alias of size_t

  double earth = std::stod (orbits,&sz);
  double moon = std::stod (orbits.substr(sz));
  std::cout << "The moon completes " << (earth/moon) << " orbits per Earth year.\n";
  return 0;
}

编译失败,错误为 "Function stod could not be resolved"。如果我删除这些调用,并将 earth 初始化为 0.0,将 moon 初始化为 1.0,它编译并运行良好(当然答案是错误的)。

我尝试从 Ubuntu 命令行编译相同的程序,当我包含 -std=c++11 编译标志时它可以工作。

> g++ -o teststod teststod.cpp -std=c++11
> teststod
The moon completes 12.3684 orbits per Earth year.

我的 Linux 是最新的,我已经进行了 apt-get 更新以确保。 一个可能的线索,我最初只安装了 Java 目标的 Eclipse,但我在 Eclipse 中将这些项目创建为具有 C/C++ 透视图的 C++ 项目。

作为参考,这里是 Eclipse 的关于页面 returns:

IDE for Java Developers
Version: Mars.1 Release (4.5.1)
Build id: 20150924-1200

Ubuntu version:
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:    14.04
Codename:   trusty

退一步后,我决定重新安装一切。在查看了一个 youTube video on setting up Eclipse C on windows 后,我意识到安装 Eclipse 以支持 C 需要以下步骤:

  • 正在从 java.oracle.com 下载 Java JDK(完成)
  • 正在下载 Eclipse(完成)
  • 正在下载 C/C++ 编译环境(未完成!)
  • 正在下载 Eclipse CDT 包(未完成)

像许多人一样,我认为我可以简单地下载 Eclipse for C/C++ 并让它开箱即用,但我无法构建任何像 helloWorld 这样的教程。我需要单独下载编译器工具链。

我下载并安装了 cygwin 和 Eclipse CDT 包,但我仍然遇到错误,因为 Eclipse 找不到标准的包含文件头,也找不到 make 程序。

这个post讲的是设置PATH。我必须在 Window->Preferences->C/C++->Build->Environment 下设置项目构建环境 PATH 变量,并将路径 C:\cygwin64\bin 添加到 PATH 变量。

在项目属性下,我必须转到 C/C++ Build 下的 Tool Chain Editor 并将 Current Toolchain 设置为 CygWin GCC 并将 Current builder 设置为 CDT Internal Builder 根据这个 post.

而且因为我是从头开始的,所以我不得不返回并为 <project>Properties->C/C++ Build->Settings->Dialect' and chooseISO C++11 (-std=c+) 下的项目设置 -std=c++0x +0x)under语言标准`。

然后项目构建成功并且 运行 正确。感谢 StackEchange 上为您的各种帖子提供帮助的每个人。