2011-02-07 44 views
1

我正在使用VS2008標準版。庫中包括atlcom.h,這是給編譯錯誤:_ATL_DLL_IMPL在ATL標頭中導致編譯錯誤

這就提出了一個錯誤ClassesAllowedInStream不知道:

struct ATL_PROPMAP_ENTRY 
{ 
    LPCOLESTR szDesc; 
    DISPID dispid; 
    const CLSID* pclsidPropPage; 
    const IID* piidDispatch; 
    DWORD dwOffsetData; 
    DWORD dwSizeData; 
    VARTYPE vt; 
#if !defined(_ATL_DLL_IMPL) && !defined(_ATL_DLL) 
    ClassesAllowedInStream rgclsidAllowed; 
    DWORD cclsidAllowed; 
#endif 
}; 

在這裏,我得到一個錯誤「「ATL: :CComVariant :: ReadFromStream」:函數不接受4個參數

#if defined(_ATL_DLL_IMPL) 
     hr = var.ReadFromStream(pStm, pMap[i].vt); 
#else 
     hr = var.ReadFromStream(pStm, pMap[i].vt, pMap[i].rgclsidAllowed, pMap[i].cclsidAllowed); 
#endif 

而綜觀目前相關申報(atlcomcli.h):

HRESULT ReadFromStream(_Inout_ IStream* pStream, VARTYPE vtExpected = VT_EMPTY); 

我的MFC/ATL頭是從MSVC++據我所知,位於C的標準安裝:\程序文件(x86)\微軟的Visual Studio 9.0 \ VC \ atlmfc 。第三方庫適用於很多人,並且經過了充分測試,所以我很確定我的配置是以某種方式歸咎於它的。看起來由於某種原因_ATL_DLL_IMPL沒有被定義,但它應該是?

任何想法?

回答

3

您可能需要將「項目屬性 - >配置屬性 - >常規 - >使用ATL」選項更改爲「動態鏈接到ATL」。

相關問題