VB.NET 传递 包含数组的结构体指针 参数
【求助】 VB.NET 传递 包含数组的结构体指针 参数外部的DLL文件,用到一个结构体,如下:C/C++ codetypedef str
【求助】 VB.NET 传递 包含数组的结构体指针 参数
外部的DLL文件,用到一个结构体,如下:
C/C++ codetypedef struct _EXT_PACKET2{ BYTE ucHeader; BYTE ucLen; BYTE ucData[18]; BYTE ucCrc;}EB_IO_EXT_PACKET2, *PEB_IO_EXT_PACKET2;
有个函数原型如下:
C/C++ codeHRESULT USBAdapterExtendSendAndReceive(EXT_PACKET2* pSendPacket, EXT_PACKET2* pReceivePacket)
在VB.NET中,想使用上面的函数USBAdapterExtendSendAndReceive,
首先调用该DLL文件,并声明使用该函数
VB.NET codeDeclare Function myExtendSendAndReceiveRetryContinuous Lib "Adapter.dll" Alias _ "USBAdapterExtendSendAndReceive" (ByVal pSendPacket As Object, ByVal pReceivePacket As Object) As Integer
上面声明DLL中函数的方式,对于哪些不带参数的函数,用此方式已调用成功
但是,碰到调用结构体指针作为参数,就迷糊了,按照直接使用的方式出错了,错误信息如下:
ArgumentException was unhandled
Value does not fall within the expected range
实在不知道该怎么办了,所以向大家求救来了,
需要解决的问题如下:
1.在Declared中该函数的2个参数定义的是否正确?如果不对,该如何定义?
2. 将VB.NET中已定义好的结构体传递给函数USBAdapterExtendSendAndReceive,具体该如何实现??
3. 该结构体中有个数组变量,该如何处理??
[解决办法]该问题已解决...
主要是由于 非托管 的问题造成的
如果碰到这个情况,可以参考
http://blog.csdn.net/Donjuan/article/details/3865026