【问题标题】: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 将与可执行文件放在同一目录中。这不是您可以从属性页面中包含的内容

标签: c++


【解决方案1】:

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

【讨论】:

  • 编译器与后期出现的 DLL 无关。这更多是在代码生成阶段,编译器需要验证您尝试使用的类型。应该有一个标题,其中引入了 ADODB 类型。确保它包含在您尝试编译的源文件中。
猜你喜欢
  • 1970-01-01
  • 2020-02-02
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多