Eclipse C++:无法解析符号“std”
Posted
技术标签:
【中文标题】Eclipse C++:无法解析符号“std”【英文标题】:Eclipse C++: Symbol 'std' could not be resolved 【发布时间】:2012-08-02 14:42:21 【问题描述】:我在 TestExecute.cpp 中收到此错误 -
“无法解析符号‘std’”
代码
#include <iostream>
using namespace std;
我刚刚在 Eclipse(在 Windows 7 中)中创建了一个可执行项目,如下所示。好像我正在选择一个不受支持的工具链。是这样吗?我已经安装了 Cygwin,它在首选项中可用。
编辑:基于@RobertoWilko 评论,删除“使用命名空间标准; ” 删除了错误。但未创建二进制文件。“启动失败。找不到二进制文件”。如何更正?
【问题讨论】:
不,using namespace std;
确实 not 意味着 std::
突然总是意味着 std::std::
@RobertoWilko 删除该行删除了错误。但是没有创建二进制文件。你有什么主意吗? “启动失败。找不到二进制文件”
@Lijo- 我在on this forum 上读过一些关于类似问题的文章,但是对于 CrossGCC,您可能想看看。我不是故意混淆情况。删除该行后,您必须添加 std::,如果您不知道,请见谅。
检查“C++ 常规”选项卡中的“路径和符号”。如果您选择工具链,您应该会看到标准头文件的正确包含路径。当然,前提是环境配置正确。
检查这个解决方案,我有同样的问题:***.com/a/24981627/1161594
【参考方案1】:
试试这个步骤:https://www.eclipse.org/forums/index.php/t/636348/
前往
Project -> Properties -> C/C++ General -> Preprocessor Include Paths, Macros, etc. -> Providers
激活 CDT GCC 内置编译器设置 停用使用项目之间共享的全局提供程序 添加命令行参数 -std=c++11。【讨论】:
再一步:重启eclipse。 (对我来说)【参考方案2】:我不知道你是否解决了这个问题,但我想发布我的解决方案,以解决可能遇到相同问题的人。
首先,确保您的项目资源管理器中有“包含”文件夹。如果没有,请转到第二步。如果有,请转到第三步。
二、Window -> Preferences-> C/C++-> Build >Environment:创建两个环境变量:
a) 名称:C_INCLUDE_PATH
值:/usr/include
b) 名称:CPLUS_INCLUDE_PATH
值:/usr/include/c++
转到Cygwin/usr/include/
,如果找不到文件夹“c++”,请从\cygwin\lib\gcc\i686-pc-cygwin\X.X.X\include
复制它,然后重新启动Eclipse。
-
第三,在Project Explorer -> Properties -> C/C++ General -> Paths and Symbols -> Includes -> Languages:GNU C++ 中右键单击您的项目
如果您可以在“包含目录”中找到一些 C++ 文件夹,则单击应用和确定。稍微更改一下您的代码,然后保存。
你会发现不会有符号无法解决的问题。
我记录了我的解决方案,希望有人能从中受益。
【讨论】:
【参考方案3】:你可以像这样重写代码:
#include<iostream>
#include<stdio.h>
using namespace std;
【讨论】:
“为了解决问题,他们在头文件中添加了.h”误导。它是具有 .h 扩展名的“旧”标头。例如,“新”(如果 15 岁对您来说意味着新)stdio.h 称为 cstdio。无论如何,我不明白这是如何回答这个问题的。 添加#include对于 MinGW,这对我有用:
右键项目,选择Properties
转到C/C++ General
- Paths and Symbols
- Includes
- GNU C++
- Include directories
选择Add...
选择Variables...
选择MINGW_HOME
并点击OK
点击Apply
和OK
您现在应该在项目浏览器的 Includes 中看到多个 MinGW 路径。 错误可能不会立即消失,您可能需要刷新/构建您的项目。
如果您使用的是 Cygwin,则可能存在等效变量。
【讨论】:
【参考方案5】:项目中的includes文件夹可能缺少/usr/include/c++。 在项目资源管理器中转到您的项目,右键单击 -> 属性 -> C\C++ 构建 -> 环境 -> 添加 -> value= /usr/include/c++。重启eclipse。
【讨论】:
【参考方案6】:让我解决问题的方法是:项目 -> 属性 -> C/C++ 常规 -> 预处理器包括路径、宏等 -> 提供程序 -> CDT GCC 内置编译器设置,启用该功能并禁用 CDT Cross GCC 内置编译器设置
【讨论】:
【参考方案7】:安装C++ SDK:
帮助 > 安装新软件 > 使用:path for your eclipse version
> 搜索 C++ 并安装 C++ sdk 开发工具。
路径示例:Mars - http://download.eclipse.org/releases/mars
【讨论】:
这对我有用,而网络上没有其他功能。我不知道是否需要,但重新启动后我确实单击了“项目 > C/C++ 索引 > 重新解析未解决的包含”。我正在运行 openSUSE(所以我没有 MinGW 或 Cygwin)。【参考方案8】:我在带有 16.04 内核的 Kubuntu 上使用 Eclipse Neon 时遇到了这个问题,我不得不将我的 #include <stdlib.h>
更改为 #include <cstdlib>
这使得 std 命名空间对 Eclipse “可见”并消除了错误。
【讨论】:
【参考方案9】:这对我来说适用于 C/C++ 开发人员版本的 Eclipse IDE 版本:2020-03 (4.15.0) 构建 ID:20200313-1211。另外,我的代码是交叉编译的。
-
创建一个新项目,确保它是作为交叉编译解决方案创建的。您必须添加与您的交叉编译器位置匹配的 /usr/bin 目录。
在项目属性中为交叉编译器添加 C 和 C++ 头文件。
对于 C:项目 > 属性 > C/C++ 常规 > 路径和符号 > 包含 > GNU C。添加... -> 从交叉编译器到 /usr/include 目录的路径。
对于 C++:项目 > 属性 > C/C++ 常规 > 路径和符号 > 包含 > GNU C++。添加... -> 从交叉编译器到 /usr/include/c++/ 目录的路径。
如果您不知道您的 gcc 版本,请在控制台中输入(确保它是您的跨 gcc 二进制文件):
gcc -v
修改交叉编译器的方言(这是诀窍)。
对于 C:项目 > 属性 > C/C++ 构建 > 设置 > 工具设置 > 跨 GCC 编译器 > 方言。设置为 ISO C99 (-std=C99) 或符合您的 C 文件标准的任何内容。 对于 C++:项目 > 属性 > C/C++ 构建 > 设置 > 工具设置 > Cross G++ 编译器 > 方言。设置为 ISO C++14 (-std=c++14) 或符合您的 C++ 文件标准的任何内容。 如果需要,请通过右键单击项目 > 索引 > 重建来重新索引所有项目。【讨论】:
【参考方案10】:在我看来,您报告的问题是由以下原因引起的:
-
您正在尝试编译 C 代码并且源文件具有 .cpp 扩展名
您正在尝试编译 C++ 代码并且源文件具有 .c 扩展名
在这种情况下,Eclipse 无法识别要使用的正确编译器。
【讨论】:
【参考方案11】:尝试先重启 Eclipse,在我的情况下,我更改了项目的不同编译器设置,然后它显示此消息,重启后它可以工作。
【讨论】:
以上是关于Eclipse C++:无法解析符号“std”的主要内容,如果未能解决你的问题,请参考以下文章