繁体   English   中英

在C#和C之间共享变量

[英]Sharing variable between C# and C

我已经看到了几乎相同问题的一些答案,但是没有C#代码可以帮助我理解。

我有一个C ++ .DLL文件注入到内存中。 虽然,此DLL只是从应用程序中获取信息,还从C#.exe获取信息。

C#exe信息将每秒更改一次,而C ++信息将仅更改一次或两次。

如何在两个正在运行的应用程序之间创建共享变量,以及如何对其进行读写?

谢谢!

如果要构建可靠的解决方案,则应使用以下方法:

  1. 从C#到C ++函数的调用。 保持参数类型尽可能简单。 任何C#线程都可以进行这些调用。
  2. 启动您自己的C ++线程,这些线程仅读取/修改C ++数据并仅调用C ++方法和函数。
  3. 使用Windows内核对象进行同步和其他类似的工作。 一方发出事件信号而另一方等待事件就很好了。

其他类型的交互也是可能的,但我不鼓励使用它们。 这些附加类型并不简单,定义也不明确,包含警告等。上述3种方法允许构建复杂的应用程序。

要调用C ++函数,请添加到程序集中:

[DllImport("User32.dll")]
static extern Boolean MessageBeep(UInt32 beepType);

这表明User32具有您要调用的入口点MessageBeep 之后,您可以将其用作任何其他功能:

MessageBeep(0);

您可以通过类似的方式在自己的DLL中调用GetProcAddress或任何其他入口点。

我将使用命名管道,以便两个进程可以轻松地相互通信! (C#服务器和C ++客户端)

感谢大家的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM