c++进程和C#进程之间通信的问题

先之 2008-06-06 09:01:22
现有一C++应用程序和一C#应用程序,C++应用程序用来进行数据处理,并向C#应用程序同步传递处理后的数据,而C#应用程序接收这些数据,并实时的绘制图像(之所以这么做,是因为有一个人熟悉C++,另一个熟悉C#,而且C++处理数据块,而C#绘图容易而且漂亮)。

注意:
1.两个应用程序之间传送的数据量非常大,例如传递10个长度为10000的Double型数组和10个长度为10000的string型数组。
2.两个应用程序之间通信非常频繁,而且要求是同步,即c++处理完数据,马上传递给C#,c#程序立即绘制成图。
3.两个应用程序处于同一台机子上,所以无需通过网络形式通信。


那么,这两个应用程序之间通信用什么方式实现好呢?命名管道,内存共享,或其他?求高手解决这个问题。

...全文
548 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
woszsj 2010-11-16
  • 打赏
  • 举报
回复
MARK
outstand 2009-09-13
  • 打赏
  • 举报
回复
C++代码摘要:

HANDLE m_hMapFile=CreateFileMapping((HANDLE)0xFFFFFFFF),

NULL,PAGE_READWRITE,0,0x1000,"ZZZOBJ");

void* m_pBaseMapFile=MapViewOfFile(m_hMapFile,

FILE_MAP_READ|FILE_MAP_WRITE, 0,0,0);

//这部分创建是没问题的,也可以对共享内存进行操作
//主要是在另一个C#项目中,没法打开映射

c# 代码摘要:
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr OpenFileMapping(int dwDesiredAccess,[MarshalAs(UnmanagedType.Bool)] bool bInheritHandle,string lpName);

IntPtr m_fm = OpenFileMapping(FILE_MAP_READ,false,"ZZZOBJ")

//返回的m_fm是0
//不知道是为什么?弄了好几天了,一直没有解决
aimeast 2008-06-08
  • 打赏
  • 举报
回复
学习
家鸣 2008-06-06
  • 打赏
  • 举报
回复
内存共享比较合适,通信不是问题,同步才是主要问题。
HpyHacking 2008-06-06
  • 打赏
  • 举报
回复
楼主说的几种都差不多
pipeline 推荐
先之 2008-06-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 blackhero 的回复:]
WCF
[/Quote]
谢谢!
但是WCF应该是托管类的吧,而用C++写的是非托管类的,和C#能通信吗?
wanghui0380 2008-06-06
  • 打赏
  • 举报
回复
直接用内存文件映射就可以了

内存文件映射需要使用api,这个对c++的人比较容易弄,c#的麻烦调用非托管代码,调试和转换很麻烦的说
blackhero 2008-06-06
  • 打赏
  • 举报
回复
WCF
先之 2008-06-06
  • 打赏
  • 举报
回复
补充一点,不需要通过web service和remoting等网络技术。
谢谢!

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧