我正在用C++11编写一个跨平台(OS和Windows)桌面应用程序,我打算在这两个平台上使用相同的C++11核心,使用UI的本机框架(Cocoa和Objective on OS和WPF和C#在Windows上),因为我认为最好的用户体验是本地的。
目前,该应用程序在两个平台上都作为控制台应用程序运行。该应用程序执行一些CPU密集型工作,并为进度报告提供回调,并在完成后实例化表示处理结果的项集合(std::vector<std::unique_ptr<Item>>)。
我的目标是让C++11库以与MVC和MVVM模式兼容的方式作为UI的模型。
UI必须:
我看过WinRT,似乎桌面应用程序中没有太多的信息可供使用。我也不喜欢在C++中创建UI本身的想法。我的目标是从C++应用程序中获取数据,并使用C#处理UI,因为我认为这是使用WPF的一种更有效的方法。
我知道P/Invoke,但我的理解是它只适用于C接口。在C++11周围创建这样一个接口似乎很麻烦。
我也知道C++/CLI,但我不确定它是否能满足我的需求,或者它是否与C++11兼容。
我看了一下CppSharp,但它似乎是一项正在进行的工作,我怀疑我是否知道如何解决可能出现的任何问题。
我有很多使用C++的经验,也有一些C#的经验,但是我不确定我是不是错过了更好的选择,或者以上哪一种方法是正确的。
发布于 2014-02-17 04:31:37
我强烈建议使用C++ Interop (http://msdn.microsoft.com/en-us/library/2x8kf7zx.aspx)。我已经用过好几次了,而且相当简单。在所有情况下,我都是在WinForms应用程序中使用它,而不是WPF,但我不认为这将是一个问题。您需要在内部CPP实现上创建一个托管包装器。为此,您需要使用C++/CLI。您还需要整理.NET和C++本地类型之间的参数。有一堆助手函数和智能指针可以帮助解决这个问题。您的其余代码可以是本机代码,并将像往常一样编译。
https://stackoverflow.com/questions/21820591
复制相似问题