해결 방법: WEC 2013에서 비동기 예외 처리를 사용하도록 설정하면 SEH 예외가 잘못된 예외 처리기에 의해 catch됩니다.

이 문서에서는 Windows Embedded Compact 2013에서 잘못된 처리기에서 SEH 예외가 catch되는 문제를 설명합니다. 이 문제를 해결하기 위해 업데이트를 사용할 수 있습니다. 이 업데이트를 설치하기 전에 이 제품에 대해 이전에 발표된 모든 업데이트를 제거해야 합니다.

증상

다음 시나리오를 고려하세요.

  • Visual Studio 2013 Application Builder 플러그 인을 사용하여 Windows Embedded Compact 2013을 대상으로 하는 C++ 애플리케이션을 만듭니다.
  • "/EHa" 컴파일러 스위치를 사용하여 비동기 예외 처리를 사용하도록 설정합니다. 이 스위치를 사용하면 C++ 동기 및 SEH(구조적 예외 처리) 비동기 예외 처리 메서드를 동일한 코드에 혼합할 수 있습니다.
  • 관련 코드를 실행하여 SEH 예외를 catch합니다.

이 시나리오에서 SEH 예외는 C++ 동기 예외에 대해 필터링된 경우에도 항상 첫 번째 예외 처리기에서 catch됩니다. 

예상되는 동작은 줄임표 예외 처리기에서 catch되는 SEH 예외입니다.

예를 들어 다음 샘플 코드:클래스 CMyEx를 실행합니다.
{
공용:
    CMyEx(int nParam) : m_nParam(nParam) { }
    int m_nParam;
};

void TestExceptions()
{
    없습니다
    {
        int a = 42;
        int b = 0;
        throw CMyEx(1);
        throw 97;
        int c = a / b;
    }
    catch(const CMyEx &e)
    {
        wprintf(L"CMyEx 예외 catch됨(param=%d)!\n", e.m_nParam);
    }
    catch (...)
    {
        wprintf(L"el"exception of unspecified type caugh by ellipsis clause!\n");
    }
} 이 샘플에서는 줄임표 처리기 대신 SEH 예외(0으로 정수 나누기)가 발생할 때 항상 첫 번째 catch 절에 도달합니다.

해결 방법

소프트웨어 업데이트 정보

Windows Embedded Compact 2013 월별 업데이트(2015년 9월)는 이제 Microsoft에서 사용할 수 있습니다. 이 Windows Embedded Compact 2013 월간 업데이트를 다운로드하려면 Microsoft OEM Online 또는 MyOEM으로 이동합니다.

필수 구성 요소

이 업데이트는 이 제품에 대해 이전에 발표된 모든 업데이트가 설치된 경우에만 지원됩니다.

다시 시작 요구 사항

이 업데이트를 적용한 후에는 전체 플랫폼을 새로 빌드해야 합니다. 이렇게 하려면 다음 방법 중 하나를 사용하세요.

  • 빌드 메뉴에서 솔루션 정리를 선택한 후 솔루션 빌드를 선택합니다.
  • 빌드 메뉴에서 솔루션 다시 빌드를 선택합니다.

이 소프트웨어 업데이트를 적용한 후에는 컴퓨터를 다시 시작할 필요가 없습니다.

업데이트 대체 정보

이 업데이트는 다른 업데이트를 대체하지 않습니다.

파일 정보

이 소프트웨어 업데이트 패키지(영어 버전)는 다음 표에 나열된 파일 특성(또는 이후 버전의 파일 특성)을 포함합니다. 이 파일의 날짜와 시간은 UTC(협정 세계시)로 나열됩니다. 파일 정보를 보면 로컬 시간으로 변환됩니다. UTC와 현지 시간의 차이를 알려면 제어판의 날짜 및 시간 항목에서 표준 시간대 탭을 사용하십시오.

이 업데이트 패키지에 포함된 파일

파일 이름 파일 크기 날짜 시간 경로
Frame.cpp 34,133 2014년 11월 13일 오전 1:23:06 Private\Winceos\Coreos\Core\Corelibc\Crtw32\Eh
Fullcrt.lib 30,027,378 2015년 9월 9일 09:17 Public\Common\Oak\Lib\X86\Checked
Fullcrt.lib 30,228,292 2015년 9월 9일 09:17 Public\Common\Oak\Lib\X86\Retail
Fullcrt.lib 28,759,836 2015년 9월 9일 16:09 Public\Common\Oak\Lib\X86\Debug
Fullcrt.lib 29,278,300 2015년 9월 9일 09:17 Public\Common\Oak\Lib\Armv7\Checked
Fullcrt.lib 29,566,730 2015년 9월 9일 09:17 Public\Common\Oak\Lib\Armv7\Retail
Fullcrt.lib 33,139,560 2015년 9월 9일 16:09 Public\Common\Oak\Lib\Armv7\Debug
Msvcr110d.dll 1,339,952 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\X86
Msvcr110.dll 754,224 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.map 1,287,579 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.rel 528,834 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\X86
Msvcr110.map 788,986 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\X86
Msvcr110.rel 242,169 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.dll 1,145,312 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.dll 539,608 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\Arm
Msvcr110d.map 2,714,275 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\Arm
Msvcr110d.rel 215,924 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.map 1,258,317 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.rel 122,167 2015년 9월 8일 05:26 Public\Common\Sdk\Crt\Bin\Arm

      

참조 자료

Microsoft에서 소프트웨어 업데이트를 설명하는 데 사용하는 용어에 대해 알아보세요.