在 C++ 和 C# 之间进行通信?

Posted

技术标签:

【中文标题】在 C++ 和 C# 之间进行通信?【英文标题】:Communicating between C++ and C#? 【发布时间】:2012-03-07 11:33:24 【问题描述】:

我想在我的应用程序中同时使用 C++ 和 C#。

C# 用于 GUI 设计,C++ 用于处理。

但我对此一无所知。它们之间如何通信。

我不知道我必须从哪里开始研究。

谁能告诉我有关这项技术的概述?如果有人有关于这个主题的文件,请给我。

我正在使用 Visual Studio 2010 进行开发。

非常感谢,

T&T集团

【问题讨论】:

这是一个关于如何在 c# 中使用 c++ 库的示例。 functionx.com/csharp2/libraries/cppcli.htm 重复? ***.com/questions/574801/call-c-library-in-c-sharp 它们非常有用,我会阅读它们。谢谢大家。 【参考方案1】:

您正在寻找的技术是 C++/CLI,它是 C++ 的专有语言扩展,允许与 .Net 代码交互。

基本思想是:您可以像以往一样使用可移植的 ISO C++ 编写 C++ 库。然后,您在 C++/CLI 中为您想从 C#(或任何其他 .Net 语言)调用的那些 C++ 组件添加一个瘦包装器。 请注意,C++/CLI 仅用于编写与 .Net 交互的代码。不要试图在 CLI 中编写实现,因为您最终会得到不可移植的代码,并且可能比纯 C++ 版本更难维护。

【讨论】:

【参考方案2】:

这取决于您的应用程序的架构应该是什么,例如,您可以创建两个不同的应用程序,一个是核心,另一个是 GUI,并通过消息传递进行通信。

在 Windows 上,您可以使用例如 Windows message queue 让两个端点相互通信。

【讨论】:

【参考方案3】:

您可以使用 C++ CLI 或本机 C++。 C++ CLI 是托管代码,而本机 c++ 将不受 CLR 管理。两者之间的选择取决于您的使用情况。 C++ CLI 有一些限制。

【讨论】:

【参考方案4】:

这也完全取决于架构和要求。您可以在 C++ (lib) 中编写处理指令,并在 GUI 中使用它们。也可以在 VS 2010 中轻松完成

【讨论】:

以上是关于在 C++ 和 C# 之间进行通信?的主要内容,如果未能解决你的问题,请参考以下文章

C# 服务器和 C++ 客户端之间的命名管道通信

使用命名管道的两种 C++ 到 C# 通信

c#命名管道双向通信

如何使用标准输入和标准输出在 C# 和 ruby​​ 进程之间进行通信

在硬件上 C++ 和 Python 之间进行通信的最佳方式是啥? [关闭]

c# c++通信--命名管道通信