2016-08-14 619 views
1

我有一个ATL项目,其中有一个实现接口的类(使用VS中的“Implement Interface”快捷方式生成)。自动生成的stdafx.h中包含:Intellisense与编译器不一致:“名称空间不存在这个名称”vs“不是类或结构名”

#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 { 
... 

原样,智能感知抱怨IBaseClient“不是一个类或结构名“,但它编译得很好。

如果我添加using namespace IBase或完全限定的基类名称(IBase::IBaseClient),然后将智能感知错误消失,但是编译器说“IBase:具有此名称的命名空间不存在”,并无法编译。

如何让智能感知和编译器都快乐?

+0

使智能感觉开心不应该成为高优先级。您最好的机会是更新或等待微软的下一次更新来修复它(并希望它们不会破坏其他东西)。 – nwp

+0

啊,所以这只是一个智能错误,我应该注销? – ZachB

+0

智能感知系统偶尔会将红色小方块置于完美的细码下。您可以尝试右键点击解决方案,然后选择“重新扫描解决方案”以强制智能感知在添加缩放之前思考更加困难,但是如果它们持续,只是忽略它们。 – nwp

回答

0

用户nwp是正确的:一个上下文菜单选项“重新扫描解决方案”的伎俩。有一点需要注意:该选项属于项目上下文菜单,而不是解决方案上下文菜单。至少在Windows 10计算机上的Visual Studio 2015是正确的。

相关问题