错误:名称后跟 '::' 必须是类或命名空间名称

Posted

技术标签:

【中文标题】错误:名称后跟 \'::\' 必须是类或命名空间名称【英文标题】:error: name followed by '::' must be a class or namespace name错误:名称后跟 '::' 必须是类或命名空间名称 【发布时间】:2014-04-07 20:33:38 【问题描述】:

我正在尝试构建我的第一个 ATL DLL 项目,其中我正在使用 ADODB。这里的问题是我让每个 ADODB 类都加了下划线

ADODB::_ConnectionPtr spADOConnection;

当我将鼠标移到ADODB::_ConnectionPtr 上时,我得到name followed by '::' must be a class or namespace name spADOConnection 我得到expected a ';'。请问这是什么意思?请问如何解决?

非常感谢!

【问题讨论】:

看起来 C++ 不知道 ADODB 是一个类或命名空间,您的项目中是否正确包含/链接了所有内容?您在编译期间是否遇到任何外部符号错误? @Gmercer015,我已正确包含msado60.dll,是的,我在LNK2001: unresolved external symbol "public: virtual long __stdcall CTProcessus::Init(class ATL::CStringT > >,wchar_t *,wchar_t *,wchar_t *)" 上获得了一个外部符号 你不包括 DLL,你包括头文件。 @Luciekulza 正如 juanchopanza 所说,您的 .dll 将与可执行文件放在同一目录中。这不是您可以从属性页面中包含的内容 【参考方案1】:

编译器找不到ADODB 的声明。确保在编译器抱怨的翻译单元中包含相关标头。

【讨论】:

编译器与后期出现的 DLL 无关。这更多是在代码生成阶段,编译器需要验证您尝试使用的类型。应该有一个标题,其中引入了 ADODB 类型。确保它包含在您尝试编译的源文件中。

以上是关于错误:名称后跟 '::' 必须是类或命名空间名称的主要内容,如果未能解决你的问题,请参考以下文章

不是类或命名空间名称

尽管编辑了我的包含语句以修复,但得到“错误 C2653:'TextureManager':不是类或命名空间名称”

升级项目时发现错误:操作符“=”不明确且“ios”:不是类或命名空间名称

窗体头文件中的“错误 C2653:系统不是类或命名空间名称”,Visual C++

类或命名空间的名称问题

模板 typedef 不是类或命名空间名称