我尝试将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时,它已经抱怨“无法打开源文件”。
所以,我的问题是:
我一直很努力地做到这一点,但是现在我担心甚至无法进行集成。我希望那里有一些C ++ / WinRT的资深人士可以帮助我。