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 choose
ISO C++11 (-std=c+) 下的项目设置 -std=c++0x
+0x)under
语言标准`。
然后项目构建成功并且 运行 正确。感谢 StackEchange 上为您的各种帖子提供帮助的每个人。
如果 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 choose
ISO C++11 (-std=c+) 下的项目设置 -std=c++0x
+0x)under
语言标准`。
然后项目构建成功并且 运行 正确。感谢 StackEchange 上为您的各种帖子提供帮助的每个人。