首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-01-26 
C#调用dll 参数是结构体 的问题。[DllImport( APIHid.dll )]publicstaticexternInt16TransmitAPDU(inthic

C#调用dll 参数是结构体 的问题。
[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;
        }




[解决办法]
你这样试试:


[StructLayout(LayoutKind.Sequential)]
public struct myStru
{
string name;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=16)]
public byte[] bArr;
}

热点排行