Я использую 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
не определено, но должно быть?
Есть идеи?