'byte[]' 转换为'byte* ??

sjsmit21 2010-12-30 03:27:41
我利用CLR项目建置DLL,类别如下
Test(BYTE *map,int size);

然后我利用C#去CALL DLL
我定義 byte[] Output = new byte[50];
带入 Test(Output,50);
出现了 无法从'byte[]' 转换为'byte*
这个要如何去转换??
...全文
209 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2010-12-30
  • 打赏
  • 举报
回复
申明为inptr传递,下面有个例子

public static extern int AddData(IntPtr data);

byte[] a = new byte[] { 44, 55, 66};

IntPtr temp = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(byte) ) *
a.Length);
Marshal.Copy(a, 0, temp, a.Length);

AddData(temp);

Marshal.FreeCoTaskMem(temp);
sjsmit21 2010-12-30
  • 打赏
  • 举报
回复
直接将数组带入..就会出现 无法从'byte[]' 转换为'byte*
wolftop 2010-12-30
  • 打赏
  • 举报
回复
如果是COM的话,那么直接用就好了。记得COM要实现自动化接口
sjsmit21 2010-12-30
  • 打赏
  • 举报
回复
我是用VC写成COM的DLL
利用参考加入的方法,并不是用DllImport的方式
C#代出来的函式 就是public int Test(byte* map,int size);
所以才需从'byte[]' 转换为'byte*
mienfong 2010-12-30
  • 打赏
  • 举报
回复
你的 DllImport 是宣告成這樣嗎?
private static extern int Test(Byte[] map, int size);

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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