在Visual Studio 2013中,用於Desktop應用程序的C++ Runtime DLL與用於Windows Store應用程序的C++ Runtime DLL不同。
桌面應用程序使用一個名爲如msvcr120.dll,msvcp120.dll,vcamp120.dll,vcomp120.dll,vccorlib120.dll等運行時的DLL。使用C++利布斯位於「$(VCInstallDir)LIB「生成的二進制文件對這些DLL的依賴。
Store應用程序使用運行時DLL的名稱,如msvcr120_app.dll,msvcp120_app.dll,vcamp120_app.dll, vcomp120_app.dll和vccorlib120_app.dll。使用二進制文件位於「$(VCInstallDir)的lib \店「的C++利布斯內置有這些DLL的依賴。
的主要區別是,這家店的DLL(那些在他們的名字_app)已經完全使用可Store應用程序在Windows API中實現。這可以通過在兩種類型的DLL上運行「dumpbin/imports」並比較結果來驗證。
此外,存儲DLL不需要安裝在System32中,因爲Store應用程序的運行時依賴關係是使用單獨的依賴關係包機制described here滿足的。 VS2012和VS2013的VCLibs框架之間的一個區別是:在Visual Studio 2013中,VCLibs調試AppX軟件包包含Debug和Release CRT DLL。
另請注意,包含任何依賴於Desktop C++ Runtime DLL的二進制文件的任何Store應用程序都不會被Windows Store接受。
無店鋪的DLL不需要安裝在System32下任。正如名稱已經解釋的那樣,該目錄是(操作)系統的一部分。 – MSalters
他們不需要「需要」,但他們可以安裝在System32中。無論好壞,長期以來都是將一些運行時DLL(甚至是非系統DLL)安裝到System32等中央目錄中。 –
其實這些dll不應該在那裏。或者該應用不會通過微軟的桌面應用認證。自Windows 2000以來,「不安裝到system32」策略一直存在。 –