6

当我使用 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 时)?

4

1 回答 1

10

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

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

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

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

此外,商店 DLL 不需要安装在 System32 中,因为商店应用程序的运行时依赖项使用此处描述的单独依赖包机制来满足。VS2012 和 VS2013 的 VCLibs 框架之间的一个区别是:在 Visual Studio 2013 中,VCLibs 调试 AppX 包包含调试和发布 CRT DLL。

另请注意,任何包含依赖于桌面 C++ 运行时 DLL 的二进制文件的应用商店应用程序都不会被 Windows 应用商店接受。

于 2013-08-27T03:25:08.017 回答