我有一个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和编译器都满意?
答案 0 :(得分:0)
用户nwp是正确的:上下文菜单选项&#34;重新扫描解决方案&#34;诀窍。需要注意的一点是:此选项属于项目上下文菜单,而不属于解决方案上下文菜单。至少对我的Windows 10计算机上的Visual Studio 2015来说是这样。