Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

coreclr 빌드 시 error C3249: illegal statement or sub-expression for 'constexpr' function

github의 coreclr 소스 코드를 빌드하니 다음과 같은 오류를 내며 실패합니다.

c:\program files (x86)\windows kits\10\include\10.0.14393.0\winrt\windows.storage.h(13854): error C3249: illegal statement or sub-expression for 'constexpr' function (compiling source file E:\coreclr\src\gc\handletable.cpp) [E:\coreclr\bin\obj\Windows_NT.x64.Debug\src\gc\wks\gc_wks.vcxproj]
c:\program files (x86)\windows kits\10\include\10.0.14393.0\winrt\windows.storage.h(13895): error C3249: illegal statement or sub-expression for 'constexpr' function (compiling source file E:\coreclr\src\gc\handletable.cpp) [E:\coreclr\bin\obj\Windows_NT.x64.Debug\src\gc\wks\gc_wks.vcxproj]


이에 대해서 다음의 글에 활발한 토론이 있습니다.

Error when compiling with Windows 10 SDK 10.0.14393.0 #6642 
; https://github.com/dotnet/coreclr/issues/6642

해결책으로 Windows SDK에 포함된 c:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um\winnt.h 파일을 변경하거나 coreclr에 포함된 debugreturn.h 파일을 변경하는 방법 등이 나오는데요. 제 경우에는 전자의 방법으로 처리했습니다. 즉, winnt.h 파일을 관리자 권한의 메모장으로 열어 아래와 같이 1900을 2900으로 변경해 주었습니다.

#if _MSC_VER >= 1900
#if _MSC_VER >= 2900 
#define _ENUM_FLAG_CONSTEXPR constexpr
#else
#define _ENUM_FLAG_CONSTEXPR
#endif

참고로, Visual Studio 2015에서 C++ 프로젝트를 생성하면 관련 상숫값은 다음과 같습니다.

_MSC_VER == 1900
_MSC_BUILD == 1
_MSC_FULL_VER == 190024213

그러고 보니, 이 값은 cl.exe를 실행시켰을 때 출력되는 Compiler Version입니다.

C:\Program Files (x86)\Microsoft Visual Studio 14.0>cl
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24213.1 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]

어쨌든, 1900을 2900으로 바꾸는 것은 그다지 좋은 처리 방법으로는 보이지 않지만, _ENUM_FLAG_CONSTEXPR에 한정된 것이니만큼 크게 영향은 없을 듯하니 딱히 나빠 보이지도 않습니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 8/25/2016]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 61  62  63  64  65  66  67  68  69  70  71  72  [73]  74  75  ...
NoWriterDateCnt.TitleFile(s)
11814정성태2/12/201910088오류 유형: 512. VM(가상 머신)의 NT 서비스들이 자동 시작되지 않는 문제
11813정성태2/12/201911692.NET Framework: 809. C# - ("Save File Dialog" 등의) 대화 창에 확장 속성을 보이는 방법
11812정성태2/11/20199568오류 유형: 511. Windows Server 2003 VM 부팅 후 로그인 시점에 0xC0000005 BSOD 발생
11811정성태2/11/201913303오류 유형: 510. 서버 운영체제에 NVIDIA GeForce Experience 실행 시 wlanapi.dll 누락 문제
11810정성태2/11/201911370.NET Framework: 808. .NET Profiler - GAC 모듈에서 GAC 비-등록 모듈을 참조하는 경우의 문제
11809정성태2/11/201912862.NET Framework: 807. ClrMD를 이용해 메모리 덤프 파일로부터 특정 인스턴스를 참조하고 있는 소유자 확인
11808정성태2/8/201913949디버깅 기술: 123. windbg - 닷넷 응용 프로그램의 메모리 누수 분석
11807정성태1/29/201912270Windows: 156. 가상 디스크의 용량을 복구 파티션으로 인해 늘리지 못하는 경우 [4]
11806정성태1/29/201911993디버깅 기술: 122. windbg - 덤프 파일로부터 PID와 환경 변수 등의 정보를 구하는 방법
11805정성태1/28/201913865.NET Framework: 806. C# - int []와 object []의 차이로 이해하는 제네릭의 필요성 [4]파일 다운로드1
11804정성태1/24/201911887Windows: 155. diskpart - remove letter 이후 재부팅 시 다시 드라이브 문자가 할당되는 경우
11803정성태1/10/201911378디버깅 기술: 121. windbg - 닷넷 Finalizer 스레드가 멈춰있는 현상
11802정성태1/7/201912772.NET Framework: 805. 두 개의 윈도우를 각각 실행하는 방법(Windows Forms, WPF)파일 다운로드1
11801정성태1/1/201913776개발 환경 구성: 427. Netsh의 네트워크 모니터링 기능 [3]
11800정성태12/28/201813062오류 유형: 509. WCF 호출 오류 메시지 - System.ServiceModel.CommunicationException: Internal Server Error
11799정성태12/19/201813865.NET Framework: 804. WPF(또는 WinForm)에서 UWP UI 구성 요소 사용하는 방법 [3]파일 다운로드1
11798정성태12/19/201813088개발 환경 구성: 426. vcpkg - "Building vcpkg.exe failed. Please ensure you have installed Visual Studio with the Desktop C++ workload and the Windows SDK for Desktop C++"
11797정성태12/19/201810450개발 환경 구성: 425. vcpkg - CMake Error: Problem with archive_write_header(): Can't create '' 빌드 오류
11796정성태12/19/201810132개발 환경 구성: 424. vcpkg - "File does not have expected hash" 오류를 무시하는 방법
11795정성태12/19/201812514Windows: 154. PowerShell - Zone 별로 DNS 레코드 유형 정보 조회 [1]
11794정성태12/16/20189933오류 유형: 508. Get-AzureWebsite : Request to a downlevel service failed.
11793정성태12/16/201811540개발 환경 구성: 423. NuGet 패키지 제작 - Native와 Managed DLL을 분리하는 방법 [1]
11792정성태12/11/201812316Graphics: 34. .NET으로 구현하는 OpenGL (11) - Per-Pixel Lighting파일 다운로드1
11791정성태12/11/201812293VS.NET IDE: 130. C/C++ 프로젝트의 시작 프로그램으로 .NET Core EXE를 지정하는 경우 닷넷 디버깅이 안 되는 문제 [1]
11790정성태12/11/201810631오류 유형: 507. Could not save daemon configuration to C:\ProgramData\Docker\config\daemon.json: Access to the path 'C:\ProgramData\Docker\config' is denied.
11789정성태12/10/201820498Windows: 153. C# - USB 장치의 연결 및 해제 알림을 위한 WM_DEVICECHANGE 메시지 처리 [2]파일 다운로드2
... 61  62  63  64  65  66  67  68  69  70  71  72  [73]  74  75  ...