C#调用dll 参数是结构体 的问题。

漫天飞花 2007-04-16 10:10:47
[DllImport("APIHid.dll")]
public static extern Int16 TransmitAPDU(int hic, ref APDUEx apdu);

调用的时候是这样的。
TransmitAPDU(0, ref apdu);
TransimtAPDU会传出apdu结构,并且结构中的一个数组在函数中赋值。运行的时候到这一步总说我的
“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”
是我从dll导入时,声明函数参数错误吗?应该怎么写才对?

ps:apdu是一个结构体,如下:
public struct APDUEx
{
public Byte sendlen;
public Byte[] sendbuf;
public Byte recvlen;
public Byte[] recvbuf;
}






...全文
208 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
graduatechai 2008-05-23
  • 打赏
  • 举报
回复
你这样试试:


[StructLayout(LayoutKind.Sequential)]
public struct myStru
{
string name;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=16)]
public byte[] bArr;
}
漫天飞花 2007-04-16
  • 打赏
  • 举报
回复
up一下,有知道的告诉我一声啊。。。求助中~~~·

110,539

社区成员

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

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

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