이 문서에서는 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에서 소프트웨어 업데이트를 설명하는 데 사용하는 용어에 대해 알아보세요.