2016-08-14 615 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是正確的。

相關問題