Win32程序使用Windows运行时API

简介

WinRT(Windows运行时)是UWP的核心,通过C++/CX语法我们可以在Win32 C++项目中使用WinRT API。

WinRT API

  1. 我们使用VS2015创建一个空的Win32 C++项目,如下:

  2. 在项目属性C/C++中打开Windows运行时扩展:

    这时候进行编译会得到一个错误:Command line error D8016: '/ZW' and '/Gm' command-line options are incompatible

  3. 在项目属性C/C++中关闭编译选项/GM:

    再次编译项目会得到一个程序集错误:fatal error C1107: could not find assembly 'platform.winmd'

  4. 引入platform.winmd程序集:

    platform.winmd程序集可以在目录C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcpackages中找到,我们需要在项目属性C/C++中增加该引用目录。再次编译会遇到另一个程序集错误:fatal error C1107: could not find assembly 'Windows.winmd'

  5. 引入Windows.winmd程序集:

    Windows.winmd程序集可以在目录C:\Program Files (x86)\Windows Kits\10\UnionMetadata中找到,如上一步一样再次加入引用目录。现在编译将没有任何错误

  6. 使用WinRT API

    如上图所示,我们使用了WinRT Platform命名空间下的字符串String类,注意使用WinRT API要使用C++/CX语法。

后记

并非所有的WinRT API都可在Win32程序中使用,哪些API可用,哪些API不可用,需要自己查询MSDN。

对于VS2017,需要额外在工程属性中,把C/C++ 语言符合模式设置为否。

参考

Using C++/CX in Desktop apps


赞助作者写出更好文章


您还未登录,登录GitHub账号发表精彩评论

 GitHub登录


最新评论

    还没有人评论...

 

 

刘杰

29岁, 现居苏州

微信:

CoderJieLiu

邮箱:

coderjie@outlook.com

Github:

https://github.com/BurnellLiu

简介:

弱小和无知不是生存的障碍,傲慢才是!

Think Twice, Code Once!

本站: 登录 注册

苏ICP备16059872号-1 苏ICP备16059872号-2 . Copyright © 2017. http://www.coderjie.com. All rights reserved.

账号登录

注册 忘记密码