求助关于C#与C++之间的数据传输问题

问题描述

通过C++读取视频图像后想要将视频图像数据实时在C#中使用,但是拷贝内存导致了帧率下降,请问什么办法能够使得C#直接读取C++分配的这块内存里的数据?

解决方案

解决方案二:
两种方式1.c++自己将数据通过http请求提交到asp.net网站,2.asp.net网站部分编写一个webservice,供c++调用
解决方案三:
建议用Socket!
解决方案四:
你可以用IntPtr返回内存指针(在c++中是DWORD在c#中是IntPtr),然后在c#中用unsafe代码使用指针处理这些数据,不过这样做不好,
解决方案五:
3楼的办法可以使用,不过看看稳定性再说。和C++做数据交互不安全的指针是不可避免的。
解决方案六:
以前在C#里做过和VC的数据交互,十分郁闷呀,数据是能取到,但是一会儿就出错了。最后推测是C#自动回收内存造成的。
解决方案七:
C++函数///ReturnType:void///player:CFlashPlayer*///buffer:void**///width:int*///height:int*///stride:int*///format:int*///获取当前的图像的内存[System.Runtime.InteropServices.DllImportAttribute("XSwfDec.dll",EntryPoint="flashplayer_get_current_bitmap",CallingConvention=System.Runtime.InteropServices.CallingConvention.StdCall)]publicstaticexternvoidflashplayer_get_current_bitmap(refSystem.IntPtrbuffer,refintwidth,refintheight,refintstride,refintformat);C#使用#region获得当前的内存中的位图IntPtrbufferPtr=IntPtr.Zero;intwidth=0;intheight=0;intstride=0;intformat=0;XSwfPlayerforWin.NativeMethods.flashplayer_get_current_bitmap(refbufferPtr,refwidth,refheight,refstride,refformat);XSwfPlayerforWin.NativeMethods.flashplayer_pause();Bitmapbit=newBitmap(width,height,stride,(System.Drawing.Imaging.PixelFormat)format,bufferPtr);objcrop.CropImage=(Image)bit;#endregion
解决方案八:
引用4楼mjp1234airen4385的回复:

3楼的办法可以使用,不过看看稳定性再说。和C++做数据交互不安全的指针是不可避免的。

~~~~
解决方案九:
我们现在的用的就是这样的。不c++的dll直接绑定了一个handle。c#只要传一个控件的句柄就可以了。
解决方案十:
涉及到应用程序间的数据交换问题,你可以使用webservice来实现。
解决方案十一:
拷贝内存尚且丢帧,就不应该有人硬往webservice这种东西上套了。
解决方案十二:
平台调用N多次,没出现没什么问题,注意数据类型的对应。C++可以传一个指针,C#里用Intptr
解决方案十三:
一次内存拷贝应该损失不了多少效率,降低帧率就更不太可能了,你帧率目前是多少?拷贝一次内存需要多长时间有没有计算过?

时间: 2024-10-28 20:34:44

求助关于C#与C++之间的数据传输问题的相关文章

vba与rs232之间的数据传输

问题描述 vba与rs232之间的数据传输 有一些数据通过rs232数据线传输到计算机中,现在能用一个超级终端捕捉数据,但是想通过vba写个程序让数据都记录在excel里面进行分析,要怎么做.有重谢 解决方案 两种办法: 1.用mscomm控件 2.用Win32API读写端口 解决方案二: VB里面有对串口(rs232口)进行读取的函数或者API吗? 解决方案三: 能提供下更详细的帮助吗,谢谢了

ssh2-【求助】Android与SSH2之间的通信

问题描述 [求助]Android与SSH2之间的通信 Andorid客户端与Web服务器通信(Web服务器用的是SSH2搭建的),数据从客户端到了action(数据正确),action里的biz类竟然是null,然后程序就走不下去了,也不报空指针异常.如果我在aciton 自己new了biz类 在biz处理业务时dao也遇到相同的问题,是个null ,等我同样自己去new dao类时,就在dao里面保存数据时出错(super.getHibernateTemplate().save(user)),

如何实现客户端与服务器之间的数据传输

问题描述 开发应用程序的时候,C/S架构用.net是怎么实现的? 解决方案 解决方案二:帮你顶!学习!!解决方案三:clickonce部署解决方案四:啥意思解决方案五:不是一句话能说清楚的.解决方案六:拜托给点提示好不好?解决方案七:提示:socketremotingwcf解决方案八:数据传输可通过remoting实现解决方案九:怎么传都可以啊,用socket,数据库什么的都算传数据解决方案十:一般的C/S结构中,C就是一个胖客户端,S就是一个数据库服务器.解决方案十一:WEBSERVICE应该

asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输_实用技巧

具体我们如何实现文件的异步刷新,目前网上已经有了很多文章来解决这个问题,但是会用到大量的javascript,由于本人编码功力尚浅,所以之今没有高清其中的所以然,但是在解决的方案中他们貌似都用到了iframe,这让我茅塞顿开,所以我就说说用这个处理刷新的思路. 首先一个实际的页面中往往是会有较多的内容,我们暂时把它分为A,B两个区域,A区域是内容区域,我们可以用updatepanel来实现异步刷新,B区域是上传区域,我们用div已经ifame占位,其中上传的具体功能实现我们可以放到C页面中,这样

location.search 通过地址栏实现页面之间的数据传输、接受、展示、处理方法

index.html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compa

Java NIO系列教程(五) 通道之间的数据传输

原文地址:http://tutorials.jenkov.com/java-nio/scatter-gather.html 作者:Jakob Jenkov   译者:郭蕾     校对:周泰 在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel. transferFrom() FileChannel的transferFrom()方法可以将数据从源通道传输到FileChanne

COM原理及应用----统一数据传输

1.概述 COM提供了应用之间数据交换的标准方案,称为统一数据传输(UDT,uniform data transfer).统一数据传输技术建立在结构化存储技术的基础之上,它通过一个"数据对象"来表达要传输的数据信息,因此,统一数据传输技术的核心在于数据对象的定义和实现.剪贴板和拖-放是统一数据传输的两个典型应用. 2.数据交换标准 早期的OLE1.0版本使用DDE(Dynamic Data Exchange,动态数据交换)作为数据交换标准,但DDE使用的格式比较简单,并且只能用全局内存

Flink中task之间的数据交换机制

Flink中的数据交换构建在如下两条设计原则之上: 数据交换的控制流(例如,为实例化交换而进行的消息传输)是接收端初始化的,这非常像最初的MapReduce. 数据交换的数据流(例如,在网络上最终传输的数据)被抽象成一个叫做IntermediateResult的概念,它是可插拔的.这意味着系统基于相同的实现逻辑可以既支持流数据,又支持批处理数据的传输. 数据传输包含多个对象,它们是: JobManager master节点,用于响应任务调度.恢复.协作,以及通过ExecutionGraph数据结

一分钟了解阿里云产品:数据传输

一.             概述   阿里云发布了很多产品,今天让我们一起来了解下数据传输(Data Transmission) 吧.   什么是数据传输呢?   阿里云数据传输支持以数据库为核心的结构化存储产品之间的数据传输. 它是一种集数据迁移.数据订阅及数据实时同步于一体的数据传输服务. 数据传输的底层数据流基础设施为阿里双11异地双活基础架构, 为数千下游应用提供实时数据流,已在线上稳定运行3年之久. 您可以使用数据传输轻松构建安全.可扩展.高可用的数据架构.     那么,数据传输有