VisualStudio新增对ARM64EC的支持

ARM64EC(“EmulationCompatible”)是一种新的应用程序二进制接口(ABI) , 旨在用来在ARM平台为Windows11编写应用程序 。 有了ARM64EC , 你可以构建能够在ARM平台上运行的Native应用 , 也可以将现有的x64应用程序以增量化的方式迁移到ARM平台 。
为什么开发者需要面向ARM64EC?
基于ARM平台所构建的应用程序 , 可以在对应的ARM设备上获取到完整的本机体验 。 但是 , 从开发者角度来说 , 将一个应用程序迁移到ARM平台不是一件容易的事情 , 因为只有将应用程序进程中的所有二进制组件都重新面向ARM平台编译一次 , 用户才能够享受到上述的本机体验 。
有了ARM64EC , 开发者可以将一个很小的代码工程作为起点 , 然后不断添加新的代码并进行增量编译 。 当你确认了代码中那些对性能影响最为深远的部分之后 , 你就可以将它们简单地编译为ARM64EC 。 应用程序剩余的部分可以继续保留为模拟x64模式 , 而重新以ARM64EC编译的代码部分将以本机代码执行 。
另外 , 将x64和ARM64EC这两种代码混合并协同工作 , 实现了即使应用程序中的x64代码部分位于你无法控制的第三方代码库 , 也可以构建一个能在ARM平台上运行的应用程序 。 举个例子 , 如果你的应用程序使用到了一些无法支持ARM平台的第三方库 , 没有关系 , 这些第三方库依然可以保留为x64模式 。 同时 , 进程内插件式应用程序中以ARM64EC编译的部分将以本机代码模式运行 , 而x64的插件将继续被加载和正常工作 。
如何在VisualStudio中面向ARM64EC编译
如果需要在VisualStudio中将你的工程编译为ARM64EC , 则你需要安装如下必要项目:gt;最新版本的WindowsInsiderSDK , 这可以通过WindowsInsider程序获得 。 gt;最新版本的VisualStudio2019预览版或者VisualStudio2022预览版 。 gt;位于VisualStudio安装程序中的ARM64EC工具 。
VisualStudio新增对ARM64EC的支持
文章图片
安装好上述的必要项目之后 , 你就可以在MSBuild工程和CMake工程中将代码面向ARM64EC来编译了 。
对于MSBuild工程
先在VisualStudio中打开C++工程或者C++解决方案 。 如果你想新建一个全新工程 , 可以选择:[Createanewproject]gt;[C++ConsoleApp] , 如下图所示:
VisualStudio新增对ARM64EC的支持
文章图片
通过工具栏的[build]gt;[configurationmanager] , 打开配置管理器 , 如下图所示:
VisualStudio新增对ARM64EC的支持
文章图片
在当前解决方案平台下拉列表中 , 选择来创建一个新的目标平台 , 如下图所示:
VisualStudio新增对ARM64EC的支持
文章图片
选择ARM64EC , 并从x64配置中拷贝所有配置 , 然后勾选[Createnewprojectplatforms]勾选框 , 并点击[OK]按钮 , 如下图所示:
VisualStudio新增对ARM64EC的支持
文章图片
最后 , 请确保ARM64EC为当前激活的解决方案配置 , 然后选择[Build]来编译你的工程代码 。
请注意:从设计上来说 , 在一个解决方案中 , 不是所有的工程都需要面向ARM64EC来进行编译 , 将它们编译为x64就可以了 。 请确保你将这些工程配置为x64目标平台 , 如下图所示:
VisualStudio新增对ARM64EC的支持
文章图片
对于CMake工程
如果你还没有安装CMake构建工具 , 则你需要在VisualStudio安装程序中安装它 , 如下图所示:
VisualStudio新增对ARM64EC的支持
文章图片
然后 , 在VisualStudio中打开你的C++CMake工程 , 如果你希望新建一个全新的工程 , 可以点击[Createanewproject]gt;[CMakeproject] , 如下图所示: