C#和C++之间的Windows(Phone)运行时组件流

本文关键字:Phone 运行时 组件 Windows C++ 之间 | 更新日期: 2023-09-27 18:19:43

我想在我的C#Windows Phone Gui应用程序中嵌入一个现有的C++控制台应用程序。我已经设法将C++控制台应用程序转换为Windows(Phone)运行时组件,允许我从C#调用它。我想知道的是将原始控制台输出路由到我已经为类似应用程序创建的C#XAML控制台。我的问题是C#控制台使用从"Stream"派生的类,该类使用"Write"函数用新文本更新自己。

不幸的是,我现在不知道应该如何创建一个可以被C#和C++用于我的目的的流。我到处找了找,但找不到合适的例子。

如果有区别,则不必从正常控制台输出中捕获输出,因为C++应用程序通过名为"log"的函数将其所有输出写入控制台。

C#和C++之间的Windows(Phone)运行时组件流

您需要给C++一个C++log函数可以使用的.NET回调。

  1. 您应该实现一个带有log函数的WinRT接口(例如ILog
  2. 确保您创建了一个实现该接口的C#类,并将其写入模拟控制台
  3. 作为应用程序在.NET中启动的一部分,创建此类的实例,并通过WinRT将其作为ILog对象传递给C++
  4. 在C++中保留此接口的副本,并在C++log函数中使用它