我目前正在尝试Holographic Remoting,并且发现通常由Windows实现的Holographic API的各个部分都来自其他地方。
例如,我的HolographicSpace
来自Microsoft.Perception.Simulation.dll
,它是上面链接的库。
我很好奇这是怎么做的,所以我创建了一个新的C ++ / WinRT组件并尝试从Windows.Graphics.Holographic.IHolographicSpace
文件中的.idl
派生,但是MIDL编译器会给我此错误信息:
error MIDL5051: [msg]use of the [exclusiveto] interface is not valid, use the runtimeclass for which this interface is exclusiveto instead
。
足够公平,否则[exclusiveto]
的用途是什么?
但是,问题仍然存在:外部组件如何假装它实现Windows名称空间中的类型?我的意思是,从理论上讲,我可以使用implements<>
结构模板并在我的类型上实现所有必需的COM接口,但是由于我的代码是部分从中生成的,因此在整个MIDL工具链中都不能很好地发挥作用。
答案 0 :(得分:1)
C ++ / WinRT不限制您可以实现的接口。因此,您可以实现互斥接口。这对于实现WinRT类或仅用于测试或模拟某些东西可能很方便。自然,这对其他语言或MIDL这样的工具都是不可见的,因为它只是C ++中的实现细节。