5

Visual Studio 2013 Preview를 사용하여 Windows Store 앱을 만들 때 내 응용 프로그램 바이너리가 msvcr120_app.dll에 종속되어 있음을 알게되었습니다. 이 DLL은 무엇입니까? 또한 msvcr120.dll이 설치되어있는 반면 msvcr120_app.dll은 "C : \ Windows \ System32"에 설치되지 않은 것으로 나타났습니다.Visual Studio 2013의 msvcr120.dll과 msvcr120_app.dll의 차이점은 무엇입니까?

이 msvcr120_app.dll과 msvcr120.dll의 차이 뭔지

  • 에 명확하지 않다?

  • 종속성 msvcr120_app.dll이 System32에 설치되어 있지 않으면 내 Visual Studio 프로젝트에서 F5를 누르면 어떻게 실행할 수 있습니까?

답변

9

Visual Studio 2013에서 데스크톱 응용 프로그램에 사용되는 C++ 런타임 DLL은 Windows 저장소 응용 프로그램에 사용되는 DLL과 다릅니다.

  • 데스크탑 애플리케이션은 msvcr120.dll, msvcp120.dll, vcamp120.dll, vcomp120.dll, vccorlib120.dll 등으로 명명 된 런타임 DLL을 사용합니다. " lib에는 $ (VCInstallDir)"에있는 C++ libs와 사용하여 구축 된 바이너리는 이러한 DLL에 대한 종속성이 있습니다.

  • 스토어 애플리케이션은 msvcr120_app.dll, msvcp120_app.dll, vcamp120_app.dll 같은 런타임 DLL의 이름을 사용, vcomp120_app.dll 및 vccorlib120_app.dll "$ (VCInstallDir) lib \ store"에있는 C++ Libs를 사용하여 작성된 바이너리는이 DLL에 종속됩니다.

가장 큰 차이점은 저장소 앱 (이름에 _app이있는 DLL)은 Store 앱용 Windows API를 사용하여 완전히 구현된다는 것입니다. 이는 두 유형의 DLL에서 "dumpbin/imports"를 실행하고 결과를 비교하여 확인할 수 있습니다.

또한 저장소 응용 프로그램에 대한 런타임 종속성이 별도의 종속성 패키지 메커니즘 described here을 사용하여 충족되므로 Store DLL을 System32에 설치할 필요가 없습니다. VS2012와 VS2013의 VCLibs 프레임 워크의 한 가지 차이점은 Visual Studio 2013의 VCLib 디버그 AppX 패키지에는 Debug 및 Release CRT DLL이 모두 포함되어 있다는 것입니다.

데스크톱 C++ 런타임 DLL에 종속 된 바이너리가 포함 된 모든 스토어 앱은 Windows 스토어에서 허용되지 않습니다.

+0

비 매장 DLL을 System32에 설치할 필요도 없습니다. 이름이 이미 설명했듯이, 해당 디렉토리는 (운영) 시스템의 일부입니다. – MSalters

+1

그들은 "필요"하지는 않지만 System32에 설치할 수 있습니다. 좋든 나쁘 든간에 런타임 DLL을 System32와 같은 중앙 디렉토리에 설치하는 것은 오래 전부터있었습니다. –

+3

실제로 이러한 DLL은 없어야합니다. 또는 앱이 Microsoft의 데스크톱 앱 인증을 통과하지 못합니다. Windows 2000 이후 "Do not install to system32"정책이있었습니다. –