我正在使用VS2008标准版。一个库包含atlcom.h,这会产生编译错误:
这引发了一个不知道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‘:function不带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:\Program (X86)\MicrosoftVisualStudio9.0\atlmfc中。第三方库为大量的人工作,并且经过了很好的测试,所以我很确定我的配置在某种程度上应该受到责备。似乎出于某种原因,_ATL_DLL_IMPL没有被定义,但它应该是?
有什么想法吗?
发布于 2011-02-14 08:29:35
您可能需要将“Properties>Configuration>General->Use”选项更改为“动态链接到ATL”。
https://stackoverflow.com/questions/4927732
复制相似问题