- 主题:C++/WinRT为什么搞一套自己的基础类型,不适用stl?
WinRT(windows runtime)是用COM实现的,多种语言如c#、c++等都能调用。
C++/WinRT是方便C++来调用WinRT的,封装了COM接口的引用计数、HRESULT转换、IAsyncInfo异步。
--
FROM 123.119.160.*
老的windows api是纯c接口的,应该是MS不想用这套了(或因为纯c的api给c#、uwp等调用起来也麻烦),就搞了一系列COM接口的api,这些COM接口是有配套的metadata的(叫.winmd)),方便自动生成,感觉类似RPC接口的midl描述文件。
【 在 finlab 的大作中提到: 】
: com性能很低啊, 我还以为是直接用c++封装的win32接口
: 如果是com的话,估计还是用com封装的dotnet
:
--
FROM 123.119.160.*
winrt的这一系列api天生就是以com接口形式提供的,不是以传统的pure c的windows api形式提供。
而且提供有这些com接口的metadata描述,这样调用者不管是c++,还是c#,都可以自动生成调用的wrapper代码。
传统的windows api是pure c的,无法自动生成,只能手写每个API的调用wrapper代码
【 在 finlab 的大作中提到: 】
: 我不太了解, winrt包装的window功能,不管是基于win32,还是基于os内核,原本都是c/c++吧
: 现在要提供一个c++的接口,为啥还要再用com包一下?
: 最好的做法,是c++提供原生c++接口, 再包个com给c#?
: ...................
--
FROM 123.119.160.*
搞winrt是为了win8 metro ui,而搞win8 metro ui又是为了用同一套系统通吃pc和mobile等,
mobile需要sandbox,而native的win32 api不能直接支持sandbox,又不如带idl描述的com能比较方便地同时支持c#/cpp/js/vb,只能在native api之上搞个winrt来支持sandbox和c#/cpp/js/vb。
在mobile上失败了是众所周知的
【 在 hgoldfish 的大作中提到: 】
: 没有的特性是指巨硬搞的那套新 UI,以及关联的 proxy,消息推送啥的。
: 巨硬自己的新程序都不用之前从 Windows Phone 挪过来的那一套。好奇现在还有为巨硬应用市场写程序的没有。
: 巨硬最近搞了 IO Rings, Register IO, Projective File System 这些都有对应的 win32api.
: ...................
--
FROM 123.119.160.*
你的帖子有点吓人,不过也看出来知识有些陈旧
mobile主要是指MS的windows phone失败了,但MS搞的这个打算通吃所有平台的架构在surface、xbox上还有用
【 在 supproton 的大作中提到: 】
: mobile指向是功能机,但功能机很快就淘汰了。Mobile过去很多厂都用的。
--
FROM 222.128.162.*
mobile = mobile platform
【 在 supproton 的大作中提到: 】
: Mobile 和phone没关系,2007年我到TCL应聘,发现他们用的是Mobile,那时智能手机还没出现。
--
FROM 222.128.162.*