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 解决了这个问题。因为在这个头文件中声明了std。【参考方案4】:

对于 MinGW,这对我有用:

右键项目,选择Properties 转到C/C++ General - Paths and Symbols - Includes - GNU C++ - Include directories 选择Add... 选择Variables... 选择MINGW_HOME并点击OK 点击ApplyOK

您现在应该在项目浏览器的 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 &lt;stdlib.h&gt; 更改为 #include &lt;cstdlib&gt; 这使得 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”的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse CDT:无法解析符号“cout”

无法解析带有 NDK r10e 的 std::chrono

无法解析的外部符号 C++

C++无法解析的外部符号

C++无法解析的外部命令和外部符号

Eclipse CDT“无法解析符号 NULL”