Win32程序使用Windows运行时API
简介
WinRT(Windows运行时)是UWP的核心,通过C++/CX语法我们可以在Win32 C++项目中使用WinRT API。
WinRT API
我们使用VS2015创建一个空的Win32 C++项目,如下:
在项目属性C/C++中打开Windows运行时扩展:
这时候进行编译会得到一个错误:Command line error D8016: '/ZW' and '/Gm' command-line options are incompatible。
在项目属性C/C++中关闭编译选项/GM:
再次编译项目会得到一个程序集错误:fatal error C1107: could not find assembly 'platform.winmd'。
引入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'。
引入Windows.winmd程序集:
Windows.winmd程序集可以在目录C:\Program Files (x86)\Windows Kits\10\UnionMetadata中找到,如上一步一样再次加入引用目录。现在编译将没有任何错误
使用WinRT API
如上图所示,我们使用了WinRT Platform命名空间下的字符串String类,注意使用WinRT API要使用C++/CX语法。
后记
并非所有的WinRT API都可在Win32程序中使用,哪些API可用,哪些API不可用,需要自己查询MSDN。
对于VS2017,需要额外在工程属性中,把C/C++ 语言符合模式设置为否。
还没有人评论...