错误:名称后跟“::”必须是类或命名空间名称。

13

我正在尝试构建我的第一个ATL DLL项目,其中我使用ADODB。问题在于我发现每个ADODB类都被下划线标记了。

ADODB::_ConnectionPtr spADOConnection;
当我将鼠标悬停在ADODB::_ConnectionPtr上时,收到了name followed by '::' must be a class or namespace name的提示;而当我将鼠标悬停在spADOConnection上时,收到了expected a ';'的提示。请问这是什么意思?如何解决?
非常感谢!

2
看起来C++不知道ADODB是一个类或命名空间,你的项目中是否正确地包含/链接了所有内容?在编译期间是否出现任何外部符号错误? - Syntactic Fructose
@Gmercer015,我已经正确包含了msado60.dll,但是我在LNK2001上得到了一个外部符号:“public: virtual long __stdcall CTProcessus::Init(class ATL::CStringT>>,wchar_t,wchar_t,wchar_t*)”。 - Lucie kulza
2
你不需要包含DLL文件,而是需要包含头文件。 - juanchopanza
@Luciekulza,正如 juanchopanza 所说,你的 .dll 应该放在可执行文件所在的同一目录中。这不是你从属性页面包含的东西。 - Syntactic Fructose
1个回答

17

编译器无法找到ADODB的声明。请确保在编译器报错的翻译单元中包含相关的头文件。


2
编译器与稍后出现的DLL没有任何关系。这更多地涉及到代码生成阶段,在此阶段编译器需要验证您尝试使用的类型。应该有一个头文件引入类型ADODB。确保它在您要编译的源文件中被包含。 - legends2k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接