是否可以在我自己的运行时类上通过Windows类型实现[独占]接口?

时间:2018-09-25 18:10:10

标签: windows-runtime c++-winrt

我目前正在尝试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工具链中都不能很好地发挥作用。

1 个答案:

答案 0 :(得分:1)

C ++ / WinRT不限制您可以实现的接口。因此,您可以实现互斥接口。这对于实现WinRT类或仅用于测试或模拟某些东西可能很方便。自然,这对其他语言或MIDL这样的工具都是不可见的,因为它只是C ++中的实现细节。