我可以使用 C++ 中的 WRL 库代替 ATL 来编写 COM 组件吗?如果可以,我是否可以在较旧的桌面 Windows 系统(如 Windows XP)上使用它?
我很确定第一个问题的答案是肯定的,因为我在 MSDN 上找到了本教程:
http://msdn.microsoft.com/en-us/library/jj822931.aspx
但是非 Windows 8 系统呢?
我可以使用 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++ 时,根本没有,尽管您必须自己编写太多。
是的。您可以编写一个标准的 COM 组件。文档中直接有一个示例。
不可以:这样的 COM 组件只能在 Windows 8 及更高版本上运行......