将Win2D集成到webrtc-uwp-sdk,但收到MIDL错误消息

时间:2018-11-07 17:14:23

标签: uwp webrtc win2d c++-winrt

我尝试将Win2D集成到webrtc-uwp-sdk中,因为我想创建一个自定义VideoCapturer,因此要使用Win2D的CanvasBitmap类。

由于我不熟悉C ++ / WinRT,因此我首先从Microsoft Screen Capture示例开始创建了一个小型XAML测试应用程序。您可能会说我只是将C#代码移植到C ++ / WinRT代码。 我添加了Win2D.uwp NuGet软件包,并在pch.h中添加了包含文件,如下所示:

#include "winrt/Microsoft.Graphics.Canvas.h"
#include "winrt/Microsoft.Graphics.Canvas.UI.Xaml.h"
#include "winrt/Microsoft.Graphics.Canvas.UI.Composition.h"

在MainPage.cpp中,我可以使用命名空间

using namespace winrt::Microsoft::Graphics::Canvas;
using namespace winrt::Microsoft::Graphics::Canvas::UI;
using namespace winrt::Microsoft::Graphics::Canvas::UI::Composition;

到目前为止,一切都很好。没问题。它编译并运行。


现在,我想飞跃地在webrtc-uwp-sdk中进行相同的操作,但这并不是一件容易的事,因为您可以在this picture中看到保存pch.h文件的项目,与impl_webrtc_VideoCapturer.h文件(我要使用Win2D类的位置)所在的位置不同。

尽管如此,我还是尝试以与测试应用程序相同的方式进行操作,并将NuGet包添加到项目Org.WebRtc中。但是,这已经使我收到很多这样的错误消息:

error MIDL5051: [msg]use of the [exclusiveto] interface is not valid, use the runtimeclass for which this interface is exclusiveto instead [context]: Microsoft.Graphics.Canvas.CanvasDevice [ Interface 'Microsoft.Graphics.Canvas.ICanvasDevice' ( RuntimeClass 'Microsoft.Graphics.Canvas.CanvasDevice' ) ]
error MIDL5030: [msg]Type name collides with an existing type. [context]: Microsoft.Graphics.Canvas.ICanvasDevice [ Interface 'Microsoft.Graphics.Canvas.ICanvasDevice'  ]

当将#include文件添加到pch.h时,它已经抱怨“无法打开源文件”。

所以,我的问题是:

  1. 我是否正确将Win2D软件包添加到Org.WebRtc,还是必须在Org.WebRtc.WrapperGlue中使用它? (或者甚至两者都可以?)
  2. 为什么会出现MIDL5051和MIDL5030错误?
  3. 如何将Win2D成功地集成到具有2个项目(其中只有一个具有pch.h文件)的项目中?

我一直很努力地做到这一点,但是现在我担心甚至无法进行集成。我希望那里有一些C ++ / WinRT的资深人士可以帮助我。

0 个答案:

没有答案