MyException - 我的异常网
当前位置:我的异常网» C# » C#调用C++ dll的有关问题,尝试读取或写入受保护的

C#调用C++ dll的有关问题,尝试读取或写入受保护的内存,这通常指示其他内存已损坏(3)

www.MyException.Cn  网友分享于:2013-12-31  浏览:686次


----------------------------------------------------
C#中调用函数如下:
bool   rsult   =   DH_CGCard.SaveBMPFile( "E:\\Test "   +   i.ToString()   +   ".bmp ",   ref   bminfo,   ref   pBuffer[0]);                  

-----------------------------
不能成功,提示尝试读取或写入受保护的内存,这通常指示其他内存已损坏,
--------------------------------------------------
问题:如何才能调用我的dll中的函数,C#中如何声明,拜托高手,定给高分,在线等!

------解决方案--------------------
首先,请确定你传入的参数在c#中都new过了。然后,试试以下的做法。
定义一个buffer
struct Buffer
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst=自己指定)]
public byte[] pBuffer;
}

然后,SaveBMPFile的第三个参数改成IntPtr类型的:
在使用之前,new一个Buffer,用System.Runtime.InteropServices.Marshal.StructureToPtr将new出来的Buffer的首地址搞出来,传进去。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有