我正在使用C++11编写一个跨平台的桌面应用程序(OS X和Windows)。我打算在两个平台上都使用相同的C++11核心,利用本地框架来实现UI(在OS X上使用Cocoa和Objective-C,在Windows上使用WPF和C#),因为我认为最好的UX体验是本地化的。
目前该应用程序在两个平台上都作为控制台应用程序运行。该应用程序执行一些CPU密集型工作,并提供进度报告的回调函数,完成后实例化一组代表处理结果的项目(
我的目标是让C++11库以与MVC和MVVM模式兼容的方式作为UI的模型。
UI必须:
目前该应用程序在两个平台上都作为控制台应用程序运行。该应用程序执行一些CPU密集型工作,并提供进度报告的回调函数,完成后实例化一组代表处理结果的项目(
std::vector<std::unique_ptr<Item>>
)。我的目标是让C++11库以与MVC和MVVM模式兼容的方式作为UI的模型。
UI必须:
- 允许用户选择要处理的文件(打开文件对话框并将文件路径发送到C++库)
- 显示进度(处理C++库的回调以更新进度条)
- 在WPF窗体中显示结果(访问Item类并显示其提供的信息)
我研究了WinRT,似乎没有太多关于在桌面应用程序中使用的信息。我也不喜欢在C++中创建UI本身的想法。我的目标是将数据输入和输出到C++应用程序,并使用C#处理UI,因为我认为这是使用WPF更有效的方式。
我知道P/Invoke,但我的理解是它只能与C接口一起使用。围绕C++11创建这样的接口似乎很麻烦。
我也知道C++/CLI,但我不确定它是否符合我的需求,或者它是否与C++11兼容。
我看了看CppSharp,但它似乎还在开发中,我怀疑我知道如何解决可能出现的任何问题。
我有很多C++经验,还有一点C#经验,但我不确定是否有更好的选择,以及上述哪种方法是可靠的。