C# 用于 UI,c++ 用于库

Posted

技术标签:

【中文标题】C# 用于 UI,c++ 用于库【英文标题】:C# for UI, c++ for library 【发布时间】:2009-11-13 18:18:01 【问题描述】:

我有一个用 C++ 编码的数值库。

我将为图书馆制作一个 UI。我知道一些MFC。因此,一种解决方案是使用 MFC 并制作原生应用程序。

替代方案是 C#。我对C#一无所知。但我认为它应该很容易学习。

一些 C++ 和 C# 混合编程的教程对我很有帮助。

谢谢!

【问题讨论】:

【参考方案1】:

我建议通过 C# 为您的 GUI 使用 Windows 窗体或 WPF。

获取您的数值库,并使用 C++/CLI 为其创建一个 .NET 包装器。这使得从 C# 中使用变得微不足道(它看起来像任何其他 C# 库)。

我强烈推荐 CodeProject 上的 Nishant Sivakumar's C++/CLI articles 来学习 C++/CLI 以及如何包装 C++ 库。他们写得相当好。

MSDN 是如何使用Windows Forms from C# 的一个很好的参考。

【讨论】:

【参考方案2】:

使用WinForms or WPF 用C# 编写您的GUI,并通过Platform Invoke 调用您的本机代码。

您可能想要考虑使用 C++/CLI 为您的本地库创建一个 .NET 包装器,而不是 P/Invoke。

恕我直言,使用 C# 比 MFC 容易得多,因此您走在正确的轨道上。

【讨论】:

P/Invoke 如果它是一个真正的 C++ 库,那么它是很困难的。您几乎必须为您的库提供一个 C API 才能使用它。 C++/CLI 更具表现力。 当然取决于他的 C++ 库的接口。如果它简单而简短,P/Invoke 就可以了。【参考方案3】:

您可以非常轻松地使用 C# 来制作 UI。您需要编写一个简单的包装类来调用您的非托管 dll,但这很简单。查看有关该主题的msdn page

【讨论】:

【参考方案4】:

使用 C#。 MFC 有点过时了,所以如果您需要学习一些东西 - 使用更新的技术,请不要在 MFC 上浪费您的时间。 我会选择 WPF,学习曲线相当陡峭,但它很有趣。

【讨论】:

【参考方案5】:

我建议调查SWIG。您可以在 C++ 中将代码的核心部分编写为 dll,然后有一个针对它的 C# UI 链接。

【讨论】:

【参考方案6】:

如果您有 C++ 数值库的源代码,您可以修改它以编译为 C++/CLI,然后您可以像任何其他 .NET 库一样链接到它。使用#defines for C++/CLI 条件编译修改源代码不需要大量工作。

【讨论】:

以上是关于C# 用于 UI,c++ 用于库的主要内容,如果未能解决你的问题,请参考以下文章

从 c# 调用 c++ 库

用于在 C++ 中抽象数据库访问的开源库?

C++编写动态库(.DLL)给C#调用方法

如何使用 C++ 封装的 COM 接口部署 C# 库?

从 C++ 回调到 C#

C++ 可用于 Android 和 iOS 上的 UI 开发