dll是C++写的,函数原型是int func(unsigned char* a, unsigned char* b){...},我在C#里调用时想通过dll生成一个Byte型数组,如byte[] by=new byte[300],我的调用是这么写的://声明函数
[DllImport.......]
static extern int func(ref byte b, ref byte a);byte by1=new by1[300];
byte by2=new by2[300];func(ref by1[0], ref by2[0])
运行的时候出了异常:
[System.AccessViolationException] = {"尝试读取或写入受保护的内存。这通常指示其他内存已损坏不知道我们这么调用对不对,请大侠指教
[DllImport.......]
static extern int func(ref byte b, ref byte a);byte by1=new by1[300];
byte by2=new by2[300];func(ref by1[0], ref by2[0])
运行的时候出了异常:
[System.AccessViolationException] = {"尝试读取或写入受保护的内存。这通常指示其他内存已损坏不知道我们这么调用对不对,请大侠指教
解决方案 »
- winform界面监控服务状态,并且可以启动和停止服务。
- winform程序后台显示控件问题
- 每次点击按钮在datagrid新增一行
- 关于C#的事件(你可以做出来吗?)
- 谁能帮小弟提供一个抓取网页数据的程序,最好是cSharp的!
- 我将常用的用户信息保存在cache中:HttpRuntime.Cache.Insert(key, item);但怎样可修改它而不影响其它用户对它的访问?
- 以n-hibernate作为底层,在checkedListbox中选择数据,然后添加到IList里,但不知道如何把对象转换为映射表对象类型
- 用c#导数据到Excel,问题是在不安装Office的情况下导。
- 大家好,问题很急,谢谢大家了!
- 关于时间比较的问题,在线
- 用代码从后台直接生成的控件,如何赋予事件?
- 关于写文件速度的疑问 如何高速写?(如能解决再加分)
byte 是一个字节
static extern int func(byte[] b, byte[] a);byte[] by1=new by1[300];
byte[] by2=new by2[300];func(by1, by2)
这个帖子讨论的比较详细,你可以看看
[MarshalAs(UnmanagedType.LPTStr)]
StringBuilder sMsgID;注意你分配的长度,char* 是有长度的,一般C++函数会同时提供Char* 指针和他的长度
如果长度不正确一样会出错