首页 文章

在Visual Studio 2013中msvcr120.dll和msvcr120_app.dll有什么区别?

提问于
浏览
5

当我使用Visual Studio 2013 Preview构建Windows应用商店应用时,我注意到我的应用二进制文件依赖于msvcr120_app.dll . 这个DLL是什么?我还注意到msvcr120_app.dll未安装在“C:\ Windows \ System32”中,而msvcr120.dll安装在那里 .

我不清楚

  • msvcr120_app.dll和msvcr120.dll有什么区别?

  • 如果在System32中没有安装依赖关系msvcr120_app.dll,我的应用程序如何运行(当我在Visual Studio项目中点击F5时)?

1 回答

  • 9

    在Visual Studio 2013中,用于桌面应用程序的C运行时DLL与用于Windows应用商店应用程序的不同 .

    • 桌面应用程序使用名为msvcr120.dll,msvcp120.dll,vcamp120.dll,vcomp120.dll,vccorlib120.dll等运行时DLL . 使用位于“ $(VCInstallDir)lib ”的C Libs构建的二进制文件依赖于这些DLL .

    • 商店应用使用运行时DLL名称,如msvcr120_app.dll,msvcp120_app.dll,vcamp120_app.dll,vcomp120_app.dll和vccorlib120_app.dll . 使用位于“ $(VCInstallDir)lib\store ”的C Libs构建的二进制文件依赖于这些DLL .

    主要区别在于Store DLL(名称中包含_app的那些)完全使用可用于Store应用程序的Windows API实现 . 这可以通过在两种类型的DLL上运行“dumpbin / imports”并比较结果来验证 .

    此外,不需要在System32中安装Store DLL,因为使用单独的依赖包机制described here可以满足Store应用程序的运行时依赖性 . VS2012和VS2013的VCLibs框架之间的一个区别是:在Visual Studio 2013中,VCLibs调试AppX包中包含Debug和Release CRT DLL .

    Also do note that any Store apps containing any binaries that depend on Desktop C++ Runtime DLLs will not be accepted to the Windows Store.

相关问题