修复“错误 C2065:未声明的标识符”

Posted

技术标签:

【中文标题】修复“错误 C2065:未声明的标识符”【英文标题】:Fixing "error C2065: undeclared identifier" 【发布时间】:2009-11-09 18:21:18 【问题描述】:

首先,我在这里完全没有我的深度。所以这个问题可能问错了,但这里是......

根据对this question 的公认答案,我正在尝试编译Audiere library 的绑定,这些绑定由Harald Fielker 制作,可在mailing list archives 中找到。

我在 VC++ Express Edition 中打开了 .vcproj 文件,并将其转换为可以使用的解决方案。然后我进入属性并添加:

“C:\Documents and Settings\tdw20\My Documents\audiere-win32\include”到附加包含目录

“C:\Documents and Settings\tdw20\My Documents\Downloads\audiere-win32\lib”到其他库目录

但我仍然收到“未声明的标识符”错误。完整的输出列在on pastebin。

有谁知道可能出了什么问题?

【问题讨论】:

不下载src很难说。您能否显示发生错误的源文件中的前几个错误以及相应的行。 如果 audiere.sourceforge.net/audiere-1.9.4-devel-doxygen 是源代码,那么您的文件 (outputstream.cpp) 中没有列出的错误。 将 outputstream.cpp 中的代码发布到第 8 行(包括第 8 行)。这被标记为 C#,因为...? 大家好,这里列出了前几行(直到第一个错误):pastebin.ca/1664646@Jon,源不是主要的audiere 包,而是输出流的绑定。 cpp 是其中的一部分。 What is an 'undeclared identifier' error and how do I fix it? 的可能重复项 【参考方案1】:

我只能开始猜测,但您确定头文件在您预期的位置吗?

【讨论】:

如果是这种情况,并且他已经包含了它们,他会从预处理器中得到一个文件未找到错误。更有可能他没有在源代码中包含必要的标题(之后,您的建议可能仍然是正确的)。【参考方案2】:

outputstream.cpp 中引用的 OutputStream 类未被识别。据我所知,它是在 audiere 项目的 audiere.h 头文件中定义的,并且 outputstream.cpp 第 2 行的 #include 指令应该包含该文件。

在 VC++ 中要尝试的两件事:

    在 outputstream.cpp 的第 8 行中,双击 OutputStream,然后右键单击,然后在上下文菜单中选择 转到定义。查看它打开了什么文件(如果有)。 右键单击第 2 行 (#include <audiere.h>) 并选择 打开文档...。再看看它是否打开了一个文件。

实际上,刚刚意识到你说你添加了 C:\Documents and Settings\tdw20\My Documents\audiere-win32\include 到包含但它看起来像 audiere.h 位于audiere 的src 子目录中。您为库指定的路径也不一致 - 它在路径中有一个额外的 Downloads dir。这两条路径都绝对正确吗?添加到包含路径的目录应包含头文件,例如 audiere.h,而库的目录应包含 .lib 文件。

【讨论】:

谢谢乔恩。 1 告诉我它没有定义,2 打开文件,但短语“OutputStream”不在该文件中的任何位置。 (缺少下载是一个错字,更改这些路径会导致更直接的错误。) 顺便说一句,听起来 VC 选择了错误的audiere.h。 VC 将在包含路径中的目录中查找。您可以通过重新排序这些目录来微调此行为。您需要找到确实定义了 OutputStream 类的audiere.h,并确保它位于包含路径中,无论您当前包含的audiere.h 是哪个目录。 我尝试编译 outputstream.cpp。一旦我将 audiere/src 目录添加到它编译好的项目的 C++/General/Additional Include Directories 属性中。【参考方案3】:

您不需要为 C# 绑定的 libaudieresharpglue.dll 编译 outputstream.cpp。您是否下载了 Audiere 1.9.4 Win32 二进制版本?实际上,我遇到了一个问题,我从 2002 年下载了旧版本的 Audiere,我想这给了我很多麻烦,直到我意识到我的版本有误。

唯一您需要担心的源文件是include/audiere.h。您将链接到lib/audiere.lib,并且在运行时您的应用程序将需要访问bin/audiere.dll(当您运行可执行文件时,可能应该将其移至可执行文件的目录,在 DLL 路径上)。

【讨论】:

以上是关于修复“错误 C2065:未声明的标识符”的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 - 使用 lowerCamelCase 命名非常量标识符

如何修复标识符必须在存储过程中声明?

如何修复这个未声明的标识符? (C++)

如何修复 C3861:“...”:找不到标识符 [重复]

如何修复这个特定的“未声明的标识符”错误?

如何修复“多部分标识符...无法绑定”