_ATL_DLL_IMPL вызывает ошибки компиляции в заголовках ATL - PullRequest
1 голос
/ 08 февраля 2011

Я использую VS2008 Standard Edition.Библиотека включает в себя 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': функция не принимает 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 Files (x86) \ Microsoft Visual Studio 9.0 \ VC \atlmfc.Сторонняя библиотека работает для большого количества людей и хорошо протестирована, поэтому я почти уверен, что моя конфигурация в чем-то виновата.Похоже, что по какой-то причине _ATL_DLL_IMPL не определено, но должно быть?

Есть идеи?

1 Ответ

3 голосов
/ 14 февраля 2011

Вам может потребоваться изменить параметр «Свойства проекта-> Свойства конфигурации-> Общие-> Использование ATL» на «Динамическая связь с ATL».

...