title: _ATL_DLL_IMPL is causing compilation errors in ATL headers
body: <p>I'm using VS2008 Standard Edition. A library is including atlcom.h and this is giving compile errors:</p>
  
  <p><em>This raises an error that <code>ClassesAllowedInStream</code> isn't known:</em></p>
  
  <pre><code>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) &amp;&amp; !defined(_ATL_DLL)
      ClassesAllowedInStream rgclsidAllowed;
      DWORD cclsidAllowed;
  #endif
  };
  </code></pre>
  
  <p><em>Here, I get an error "<strong>'ATL::CComVariant::ReadFromStream' : function does not take 4 arguments</strong>"</em></p>
  
  <pre><code>#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
  </code></pre>
  
  <p>And looking at the relevant declaration (atlcomcli.h):</p>
  
  <pre><code>HRESULT ReadFromStream(_Inout_ IStream* pStream, VARTYPE vtExpected = VT_EMPTY);
  </code></pre>
  
  <p>My MFC/ATL headers are the standard installation from MSVC++ to the best of my knowledge, located in C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc. The 3rd-party library works for a large number of people and is well-tested, so I'm pretty sure my configuration is to blame in some way. It appears that for some reason <code>_ATL_DLL_IMPL</code> is not defined but it should be?</p>
  
  <p>Any ideas?</p>