繁体   English   中英

Visual Studio 2008-在C ++ / C#多项目解决方案中共享数据

[英]Visual Studio 2008 - Sharing Data in C++/C# Multi Project Solution

我有2个项目的解决方案:

  1. 一个c ++主项目
  2. ac#项目(显示模拟器)

今天,这两个应用程序使用环回TCP客户端/服务器连接共享数据,但这并不是最佳选择(定时问题..)。

我想知道是否有一种方法可以直接从c ++项目访问c#数据,反之亦然? (似乎可以用2个c#项目实现。)如果不可能,用共享内存实现此目的的最佳方法是什么?

谢谢! 麦可

编辑:感谢您的答案。 2个项目曾经是独立的解决方案,并且都是可执行文件-我实际上是在尝试将2个项目合并为1个解决方案/可执行文件。 有关信息:c ++应用程序是嵌入式应用程序的PC版本-c#应用程序是LCD / HMI模拟器。

将C ++项目转换为C ++ / CLI项目可能是最简单的方法。 但是请注意,某些代码在C ++ / CLI中无法正常运行(在托管可执行文件中使用使用boost :: thread的库时,我们遇到了问题)。

您可以使用COM InteropPlatform Invoke来访问C#中的本机代码。

如果这不是您要的内容,请详细说明。

命名管道?

对于通过命名管道的进程间通信,您可以在C#端签出.NET 3.5功能http://msdn.microsoft.com/en-us/library/system.io.pipes.aspx 从C ++方面,我假设您知道等效的:)。

我知道有两种方法可以直接访问c ++和c#之间的内存,而无需处理封送/拆组和com的开销。 如果需要保留代码的c ++本机部分,那么我知道实现此目标的唯一方法是从c ++应用程序托管clr。 一个相对复杂的任务。 Google“托管公共语言运行库”。 然后,您可以将c#代码作为程序集加载,调用c#代码并提供通用的共享内存样式接口。 尽管您必须自己编写所有共享内存支持,因为在c#/。net中我没有找到对共享内存的直接支持。

另一种方法是使用公共语言运行时支持来编译c ++代码。 到目前为止,这很容易,它将为您提供c ++的所有功能和荣耀,同时允许访问基于clr的数据类型以及在c ++和c#代码之间来回调用的能力。 请参阅VS2008文档中的“用于定位CLR的语言功能”。 在此过程中,pin_ptr将成为您的密友和盟友。

暂无
暂无

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

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