유니버설 C런타임 라이브러리에 대해서

Visual C++2015에서는 C런타임(CRT) 라이브러리가 크게 리팩터링 되어서 Universal CRT(UCRT)와 그 이외의 런타임(vcruntime140.dll ) 2종류로 구성되어 있다.

 

UCRT에는 널리 이용되는 표준적인 C 런타임 라이브러리 코드가 구현 되어 있으며 안정된 API를 갖추고 있기 때문에 Visual Studio의 릴리스마다 버전 변경할 필요가 없는 Windows OS의 컴포넌트의 일부로서 자리 매김 되어 있다.

 

UCRT Windows 10에는 기본으로 설치되어 있지만 이전 OS에 대해서는 Visual C++2015 재 배포 가능 패키지를 사용하여 설치할 수 있다.

UCRT에 대해서는 아래의 블로그 글을 참조.

Introducing the Universal CRT

https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/  

 

애플리케이션 개발과 배포 시에 상기의 변경에 대해서 의식할 필요는 거의 없으나 CRT 배포 방법으로 "로컬 배치"를 검토하고 있는 경우에는 UCRT의 로컬 배치에 관하여 주의할 필요가 있다.

 

 

Visual C++2015에서 CRT 로컬 배치에 대해서

애플리케이션의 실행에 필요한 C 런타임 라이브러리를 실행 환경에 배포하는 방법으로는 재 배포 가능 패키지 등을 사용하여 시스템 폴더에 런타임을 설치하는 방법이 일반적이며, 이와 같이 시스템 폴더에 런타임을 설치하는 것을 "집중 배치"라 부른다.

 

이에 대한 시스템 요건 등에 의한 집중 배치를 채용하기 어려운 경우는 애플리케이션 배포 처 폴더에 런타임을 배치할 수 있으며 이러한 배치 방법은 "로컬 배치"라 부른다.

 

집중 배치와 로컬 배치에 대한 자세한 내용은 아래의 문서를 참조.

 

배치 방법 선택

https://msdn.microsoft.com/ja-jp/library/ms235316.aspx

 

로컬 배치할 때 Windows 10보다 이전의 OS에서는 전술의 UCRT도 실행 환경에 배치할 필요가 있다는 것에 유의하자. 구체적으로는 Visual Studio 2015를 설치한 환경에서 아래의 폴더에 있는 DLL을 모두 exe와 같은 폴더에 배치할 필요가 있다.

 

<UCRT 배포 원 폴더: 64 bit OS Visual Studio 2015를 설치하고 있는 경우>

(64 bit응용 프로그램용)C:\Program Files(x86)\Windows Kits\10\Redist\ucrt\DLLs\x64

(32 bit응용 프로그램용)C:\Program Files(x86)\Windows Kits\10\Redist\ucrt\DLLs\x86

 

또한 UCRT 이외의 CRT는 기존대로 redist 폴더 아래에 저장되어 있다.

 

<CRT 배포 원 폴더: 64 bit OS Visual Studio 2015를 설치하고 있는 경우>

(64 bit응용 프로그램용)C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\redist\x64

(32 bit응용 프로그램용)C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\redist\x86

 

 

Visual C++2015 응용 프로그램에서 C 런타임 라이브러리를 로컬 배치할 필요가 있는 경우에는 위 내용에 대해서 유의하자.

 

 

 

 

 

출처: https://blogs.msdn.microsoft.com/jpvsblog/2016/08/04/ucrt_local_deployment/

 

 

 

저작자 표시
신고
by 흥배 2016.09.20 08:00

오래 전부터 요구되었던 32비트 및 64비트 C++ 코드에서 동작하는 에디트 and 컨티뉴(EnC) 기능이 Microsoft에 의해서 구현되었다. VS2015 에서는 기본적으로 유효하다. VS2013에서는 32비트 코드용으로 기본적인 형식으로 지원되고 있었지만, 유효하게 하면 최신 기능을 모두 이용하지 못하는 상태였다. EnC에 의해 개발자는 디버거에서 실행 중인 프로그램의 코드를 편집 가능하게 된다. 프로그램의 실행을 재개하면 다시 컴파일을 하지 않아도 변경 결과를 확인할 수 있다.

 

이번 VS2015 에서는 진단 도구 창과 비동기 코드를 디버깅 하기 위한 확장 콜 스택 등, 다른 기능에 대한 액세스를 잃지 않는 EnC를 사용할 수 있다. 또한 개선점으로 64비트 코드에서도 에디트 and 컨티뉴를 사용 할 수 있게 되었다. 이는 VS2015의 새 기능이다.

 

새로 설치한 VS2015 RTM 상에서 작성한 신규 프로젝트에서는 기본 값으로 EnC가 유효하게 되어 있지만 경우에 따라서는 EnC를 사용를 할 수 없는 경우도 있다. 아래 항목이 설정 되어 있어야 EnC를 사용할 수 있다.

• 디버깅 정보의 포맷을 “Program Database for Edit and Continue(/Zi)"으로 설정해야 한다.

• 인크리멘탈 링크의 효율화에 “Yes(/INCREMENTAL)"를 설정해야 한다.

Debug->Option "Native Edit and Continue"를 유효하게 해야 한다.

첫 두 개의 항목은 프로젝트의 설정에서 적용한다. 세 번째 항은 Debug| Option 아래에 있다.

 

불행히도 제한이 남아 있어서 EnC가 기대대로 동작하지 않는 곳이 몇 가지 있다. VS2015 RTM 사용자에게 영향을 미칠 것도 있지만, 장래 VS2015의 업데이트로 대처할 예정이다. 먼저 꼽히는 것은 Windows 스토어용으로 컴파일된 바이너리가 EnC를 지원하지 않는 것이다. 마찬가지로 /DEBUG:FASTLINK로 컴파일 된 이진 파일도 지원하지 않는다. 최적화를 유효하게 한 컴파일된 바이너리에도 이와 같은 제한이 있다.

 

EnC를 사용하여 파일을 편집하는 경우 현행의 VC2015에서는 파일 편집 횟수가 제한되어 있다. 이것을 넘어서 편집 작업을 행했을 경우에는 예약 공간이 없음을 나타내는 오류 메시지가 표시된다. 이 예약 공간의 사이즈는 지금은 고정이지만 개발 팀은 이를 설정 가능하게 하여 보다 개발자 친화적으로 하는 것을 계획 중이다.

 

64비트 코드에서 EnC를 활용하려면 v140 도구 집합을 사용할 필요가 있다. 마찬가지로 32비트 코드로 EnC를 이용하는 경우는 v120 도구 세트가 대상이다.

 

 

출처http://www.infoq.com/jp/news/2015/08/enc-vs2015

 

 

저작자 표시
신고
by 흥배 2015.10.01 08:00
| 1 |