Hi,
I have a VS 2008 C++/ATL Addin project and want to use the window class in atlwin.h. As soon as I add the include, the compile fails with an ambiguous reference ...
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlwin.h(3200) : error C2872: 'ULONG_PTR' : ambiguous symbol
1> could be 'c:\program files\microsoft sdks\windows\v6.0a\include\basetsd.h(139) : __w64 unsigned long ULONG_PTR'
1> or 'c:\documents and settings\weltonc\my documents\visual studio 2008\projects\myaddin1\myaddin1\debug\dte80a.tlh(464) : EnvDTE::ULONG_PTR'
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlwin.h(3200) : while compiling class template member function 'ATL::CWndClassInfoA &ATL::CWindowImpl<T>::GetWndClassInfo(void)'
1> with
1> [
1> T=ATL::CAxFrameWindow
1> ]
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlhost.h(145) : see reference to class template instantiation 'ATL::CWindowImpl<T>' being compiled
1> with
1> [
1> T=ATL::CAxFrameWindow
1> ]
the dte80a.tlh comes from the type library references in stdafx.h (I think, code for that is below). The only code I added is the #include <atlwin.h>
// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, // but are changed infrequently #pragma once #ifndef STRICT #define STRICT #endif // Modify the following defines if you have to target a platform prior to the ones specified below. // Refer to MSDN for the latest info on corresponding values for different platforms. #ifndef WINVER // Allow use of features specific to Windows 95 and Windows NT 4 or later. #define WINVER 0x0400 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later. #endif #ifndef _WIN32_WINNT // Allow use of features specific to Windows NT 4 or later. #define _WIN32_WINNT 0x0400 // Change this to the appropriate value to target Windows 2000 or later. #endif #ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. #define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. #endif #ifndef _WIN32_IE // Allow use of features specific to IE 4.0 or later. #define _WIN32_IE 0x0400 // Change this to the appropriate value to target IE 5.0 or later. #endif #define _ATL_APARTMENT_THREADED #define _ATL_NO_AUTOMATIC_NAMESPACE #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit // turns off ATL's hiding of some common and often safely ignored warning messages #define _ATL_ALL_WARNINGS #include "resource.h" #include <atlbase.h> #include <atlcom.h> #pragma warning( disable : 4278 ) #pragma warning( disable : 4146 ) //The following #import imports the IDTExtensibility2 interface based on it's LIBID #import "libid:AC0714F2-3D04-11D1-AE7D-00A0C90F26F4" version("1.0") lcid("0") raw_interfaces_only named_guids //The following #import imports VS Command Bars based on it's LIBID #import "libid:1CBA492E-7263-47BB-87FE-639000619B15" version("8.0") lcid("0") raw_interfaces_only named_guids //The following #import imports DTE based on it's LIBID #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids //The following #import imports DTE80 based on it's LIBID #import "libid:1A31287A-4D7D-413e-8E32-3B374931BD89" version("8.0") lcid("0") raw_interfaces_only named_guids #pragma warning( default : 4146 ) #pragma warning( default : 4278 ) #define IfFailGo(x) { hr=(x); if (FAILED(hr)) goto Error; } #define IfFailGoCheck(x, p) { hr=(x); if (FAILED(hr)) goto Error; if(!p) {hr = E_FAIL; goto Error; } } class DECLSPEC_UUID("7BBB747B-E46E-4249-AA20-5C0E386AD78F") MyAddin1Lib; //using namespace ATL; class CAddInModule : public ATL::CAtlDllModuleT< CAddInModule > { public: CAddInModule() { m_hInstance = NULL; } DECLARE_LIBID(__uuidof(MyAddin1Lib)) inline HINSTANCE GetResourceInstance() { return m_hInstance; } inline void SetResourceInstance(HINSTANCE hInstance) { m_hInstance = hInstance; } private: HINSTANCE m_hInstance; }; extern CAddInModule _AtlModule; #include <atlwin.h>