首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_ATL_DLL_IMPL导致ATL标头中的编译错误。

_ATL_DLL_IMPL导致ATL标头中的编译错误。
EN

Stack Overflow用户
提问于 2011-02-07 23:04:25
回答 1查看 1.5K关注 0票数 1

我正在使用VS2008标准版。一个库包含atlcom.h,这会产生编译错误:

这引发了一个不知道ClassesAllowedInStream的错误:

代码语言:javascript
复制
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个参数

代码语言:javascript
复制
#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):

代码语言:javascript
复制
HRESULT ReadFromStream(_Inout_ IStream* pStream, VARTYPE vtExpected = VT_EMPTY);

据我所知,我的MFC/ATL头是MSVC++的标准安装,位于C:\Program (X86)\MicrosoftVisualStudio9.0\atlmfc中。第三方库为大量的人工作,并且经过了很好的测试,所以我很确定我的配置在某种程度上应该受到责备。似乎出于某种原因,_ATL_DLL_IMPL没有被定义,但它应该是?

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2011-02-14 08:29:35

您可能需要将“Properties>Configuration>General->Use”选项更改为“动态链接到ATL”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4927732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档