2013-05-22 2 views
3

Visual Studio Pro 2012 업데이트 2에서 Windows Image Component을 사용하는 Win32 C++ 샘플 응용 프로그램이 있습니다.이 응용 프로그램은 X86 용으로 작성되었으며 Windows 7 X64 SP1 및 Windows 7 X86 SP1에서 테스트되었습니다. 그것은 첫 번째와 잘 작동하고 "클래스가 등록되지 않은"나중에 실패합니다.32 비트 응용 프로그램에서 WIC를 사용하는 이유는 Windows 7 32 비트에서 실패합니까?

VS2008을 사용하여 동일한 코드를 작성하면 정상적으로 작동합니다. 내가 무슨 일을하고있을 수

#include "wincodec.h" 
... 
case WM_CREATE: 
{ 
IWICImagingFactory *m_pIWICFactory; 
HRESULT hr = S_OK; 

CoInitialize(NULL); 
// create WIC factory (m_pIWICFactory) 
hr = CoCreateInstance(
    &CLSID_WICImagingFactory, 
    NULL, 
    CLSCTX_INPROC_SERVER, 
    &IID_IWICImagingFactory, 
    &m_pIWICFactory); 
if (!SUCCEEDED(hr)) 
    MessageBox(NULL, 
     L"CoCreateInstance(..IID_IWICImagingFactory..) failed!", 
     L"", MB_OK); 
else 
    MessageBox(NULL, 
     L"CoCreateInstance(..IID_IWICImagingFactory..) succeeded!", 
     L"", MB_OK); 

CoUninitialize(); 
} 
break; 
... 

다음과 같이

WIC 인스턴스는 샘플 응용 프로그램에 생성됩니다?

답변

6

기본적으로 Windows 8을 대상으로하기 때문에 breaking change in VS2012이 있습니다.

이 솔루션은 그래서

hr = CoCreateInstance(&CLSID_WICImagingFactory1, NULL, CLSCTX_INPROC_SERVER, 
     &IID_IWICImagingFactory, &m_pIWICFactory); 
+0

멋진 캐치를 시도 윈도우 7

에 존재하지 않는, 후자의 결의 때문에 CLSID_WICImagingFactory2CLSID_WICImagingFactoryCLSID_WICImagingFactory1 instaed을 지정하는 것입니다! 감사!. – yms