Intellisense与编译器不一致:"具有此名称的命名空间不存在" vs"不是类或结构名称"

时间:2016-08-14 17:13:58

标签: c++ visual-studio visual-c++ intellisense atl

我有一个ATL项目,其中一个类实现了一个接口(使用"实现接口" VS中的快捷方式生成)。自动生成的stdafx.h包含:

#import "C:\path\to\base.dll" raw_interfaces_only, raw_native_types, no_namespace, named_guids, auto_search

我的班级(CPLUGIN)实施界面(IBase::IBaseClient):

class ATL_NO_VTABLE CPLUGIN :
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CPLUGIN, &CLSID_PLUGIN>,
    public IDispatchImpl<IPLUGIN, &IID_IPLUGIN, &LIBID_MyLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
    public IBaseClient {
 ...

按原样,intellisense抱怨说IBaseClient不是类或结构名称&#34;但它编译得很好。

如果我添加using namespace IBase或完全限定基类名称(IBase::IBaseClient),那么智能感知错误就会消失,但编译器会说&#34; IBase:一个命名空间这个名字不存在&#34;并且无法编译。

如何让IntelliSense和编译器都满意?

1 个答案:

答案 0 :(得分:0)

用户nwp是正确的:上下文菜单选项&#34;重新扫描解决方案&#34;诀窍。需要注意的一点是:此选项属于项目上下文菜单,而不属于解决方案上下文菜单。至少对我的Windows 10计算机上的Visual Studio 2015来说是这样。