使用C#调用自定义的Dll时遇到问题……

sayo 2006-05-23 03:55:21
自定义的dll中有形如:
InputData(BYTE* pData, int nLen);
的函数,其中的参数含义为:
pData -- 要传入的缓冲区指针
nLen -- 缓冲区字节长度
我在C#中使用byte[]类型来对应pData,报告内存错误,请问应该用什么托管类型对应这个BYTE*?
...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Knight94 2006-05-23
  • 打赏
  • 举报
回复
[DllImport("My.dll")]
public static extern void InputData([MarshalAs(UnmanageType.LPArray)]byte[] pData, int nLen);
sayo 2006-05-23
  • 打赏
  • 举报
回复
[DllImport("My.dll")]
public static extern void InputData(byte[] pData, int nLen);
Knight94 2006-05-23
  • 打赏
  • 举报
回复
你如何用dllimport声明函数的
JasonHeung 2006-05-23
  • 打赏
  • 举报
回复
byte[]可以用,但你必须先分配好空间。

byte[] buf = new byte[64];
InputData(ref buf, int nLen);


真相重于对错 2006-05-23
  • 打赏
  • 举报
回复
System.IntPtr b = System.Runtime.InteropServices.Marshal.AllocHGlobal( 1024);
InputData( b , 1024 );
chengpei_chen 2006-05-23
  • 打赏
  • 举报
回复
C#动态调用DLL
http://blog.csdn.net/pansiom/archive/2006/01/05/568096.aspx

110,539

社区成员

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

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

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