在 C++ 和 C# 或 VB 之间共享数据(2 个运行程序)

Posted

技术标签:

【中文标题】在 C++ 和 C# 或 VB 之间共享数据(2 个运行程序)【英文标题】:Share data between C++ and C# or VB (2 running program) 【发布时间】:2016-10-24 10:17:05 【问题描述】:

有没有办法(除了网络(我讨厌 io-streams))在 2 个进程之间进行通信?一个在 C++ 中,另一个在 C# 或 VB 中。 我的问题是,我使用 C++ 编写 AVR 程序,但出于调试目的,我需要一个 GUI 来测试不同的输入。因为我对 c++ 中的 GUI 没有任何了解(而且我没有计划学习它),所以我想使用 .net 编写 GUI,并以某种方式将其连接到我的 c++ 代码。 因为我有 2 个正在运行的进程,所以我不能使用 p/invoke 和其他类似的方法。如果我可以在 2 个进程之间共享我的变量或从 c++ 调用 c# 中的函数(从正在运行的进程到正在运行的进程),那将解决我的问题。 除了插座还有什么?

【问题讨论】:

在没有套接字的情况下,我能想到的最好的方法是从另一个进程运行一个进程,并带有一些启动参数 它只是用于调试和测试还是您需要实际解决方案? 不,它只是用于调试和测试,所以我不介意肮脏的解决方案。并且由于它是临时的,只需要一个快速快速的方法......,使用 ram。我的硬盘现在感觉不舒服:cry: 【参考方案1】:

既然您提到了 .NET,您可能在 MS Windows 上。您可以使用 DDE(动态数据交换):

https://msdn.microsoft.com/en-us/library/windows/desktop/ms648774(v=vs.85).aspx

你可以在这里找到它的 .NET 教程:

http://blogs.artinsoft.net/Mrojas/archive/2009/06/10/DDE-in-NET.aspx


如果您想要快速的虚拟解决方案,该解决方案仅适用于调试而不是真正的解决方案。您可以通过将数据写入硬盘并再次从中读取来共享您的数据。不难也不复杂。

【讨论】:

因为我要快速检查该数据(每秒至少 10 次),我 guss 文件系统不是一个好的解决方案,我正在阅读有关 DDE、tnx 的信息【参考方案2】:

数据库呢?如果你使用的是 MS,你可以试试 MSSQL。

我认为它对小型数据库完全免费 :)

【讨论】:

以上是关于在 C++ 和 C# 或 VB 之间共享数据(2 个运行程序)的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET和C++之间的区别

如何在 C# 和 C++ 代码之间共享常量?

c++和c#之间的共享内存同步

C#:在多个进程和/或线程之间共享数据的最佳方式

vb c c++,c# vb.net到底啥区别

混合模式调试(C++、C#、VB)