我可以在C++中使用WRL库来代替ATL来编写COM组件吗?如果是的话,我是否可以在较旧的桌面Windows系统上使用它,比如Windows XP?
我很确定第一个问题的答案是肯定的,因为我在MSDN上找到了这个教程:
http://msdn.microsoft.com/en-us/library/jj822931.aspx
但是非Windows 8系统呢?
嗯,当然可以.您可以在纯C++代码中编写COM服务器,而根本没有任何辅助类.如果你真的想要,你可以在C中写一个,尽管这违反了大多数司法管辖区的"日内瓦程序员权利公约".
可能不那么明显的是缺少的东西.WRL只是不会让编写服务器变得更容易.或者保持它.你错过了什么:
<comutil.h>.还有一大堆如果不值得一提的小东西,比如公寓,ActiveX,聚合,错误信息等等.当你需要它时,伤害非常糟糕.WRL的一个可能的优点是神秘胶水较少,ATL有相当数量的胶水可以大大提高抽象水平.这是故意的,但必须要学习.当然,当你使用纯C++时根本就没有,尽管你必须自己写太多.