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++ 用于库的主要内容,如果未能解决你的问题,请参考以下文章