Development/Failure Log
error C2668: 'ATL::InlineIsEqualGUID' : 오버로드된 함수에 대한 호출이 모호합니다.
Kugi
2013. 11. 8. 08:30
Windows Embedded Compact 7 응용 어플리케이션 개발 설정을 위해 테스트 도중 다음과 같은 에러가 발생했다.
1>c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\atlmfc\include\atlbase.h(7362) : error C2668: 'ATL::InlineIsEqualGUID' : 오버로드된 함수에 대한 호출이 모호합니다.
1> c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\atlmfc\include\atlosapice.h(1313): 'int ATL::InlineIsEqualGUID(const GUID &,const GUID &)'일 수 있습니다.
1> C:\Program Files (x86)\Windows CE Tools\SDKs\TCC892x_W7_SDK\include\ARMv4I\guiddef.h(138): 또는 'int InlineIsEqualGUID(const GUID &,const GUID &)'[인수 종속성을 조회하여 발견)
원인:
AtlBase.h에 using namepace ATL;이 선언되어있기 때문에 sdk와 충돌이 생기는 듯 하다.
해결 방법:
atlbase.h의 전역 네임스페이스 이름을 명시해준다.
::ATL::InlineIsEqualGUID()
예시:
if ((pEntry->pfnGetClassObject != NULL) && ::ATL::InlineIsEqualGUID(rclsid, *pEntry->pclsid)) { if (pEntry->pCF == NULL) { CComCritSecLocklock(_AtlComModule.m_csObjMap, false); hr = lock.Lock(); if (FAILED(hr)) { ATLTRACE(atlTraceCOM, 0, _T("ERROR : Unable to lock critical section in CComModule::GetClassObject\n")); ATLASSERT(0); break; } if (pEntry->pCF == NULL) hr = pEntry->pfnGetClassObject(pEntry->pfnCreateInstance, __uuidof(IUnknown), (LPVOID*)&pEntry->pCF); } if (pEntry->pCF != NULL) hr = pEntry->pCF->QueryInterface(riid, ppv); break; }
참고 링크: