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