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
:具有此名称的命名空间不存在”,并无法编译。
如何让智能感知和编译器都快乐?
使智能感觉开心不应该成为高优先级。您最好的机会是更新或等待微软的下一次更新来修复它(并希望它们不会破坏其他东西)。 – nwp
啊,所以这只是一个智能错误,我应该注销? – ZachB
智能感知系统偶尔会将红色小方块置于完美的细码下。您可以尝试右键点击解决方案,然后选择“重新扫描解决方案”以强制智能感知在添加缩放之前思考更加困难,但是如果它们持续,只是忽略它们。 – nwp