Visual studio 2008 _ATL_DLL_IMPL导致ATL标头中出现编译错误

Visual studio 2008 _ATL_DLL_IMPL导致ATL标头中出现编译错误,visual-studio-2008,visual-c++,atl,winapi,Visual Studio 2008,Visual C++,Atl,Winapi,我使用的是VS2008标准版。库包含atlcom.h,这会导致编译错误: 这会引发一个未知的ClassesAllowedInStream错误: 在这里,我得到一个错误“”ATL::CComVariant::ReadFromStream”:函数不接受4个参数 并查看相关声明(atlcomcli.h): 据我所知,我的MFC/ATL头是MSVC++的标准安装,位于C:\Program Files(x86)\Microsoft Visual Studio 9.0\VC\atlmfc中。第三方库适用于大

我使用的是VS2008标准版。库包含atlcom.h,这会导致编译错误:

这会引发一个未知的
ClassesAllowedInStream
错误:

在这里,我得到一个错误“”ATL::CComVariant::ReadFromStream”:函数不接受4个参数

并查看相关声明(atlcomcli.h):

据我所知,我的MFC/ATL头是MSVC++的标准安装,位于C:\Program Files(x86)\Microsoft Visual Studio 9.0\VC\atlmfc中。第三方库适用于大量用户,并且经过了良好的测试,因此我很确定我的配置在某种程度上是错误的。似乎出于某种原因,
\u ATL\u DLL\u IMPL
没有定义,但应该定义吗

有什么想法吗?

您可能需要将“项目属性->配置属性->常规->使用ATL”选项更改为“动态链接到ATL”

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
};
#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
HRESULT ReadFromStream(_Inout_ IStream* pStream, VARTYPE vtExpected = VT_EMPTY);