错误:名称后跟 '::' 必须是类或命名空间名称
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”:不是类或命名空间名称