外部的DLL文件,用到一个结构体,如下:
typedef struct _EXT_PACKET2
{
BYTE ucHeader;
BYTE ucLen;
BYTE ucData[18];
BYTE ucCrc;
}EB_IO_EXT_PACKET2, *PEB_IO_EXT_PACKET2;
有个函数原型如下:
HRESULT USBAdapterExtendSendAndReceive
(EXT_PACKET2* pSendPacket, EXT_PACKET2* pReceivePacket)
在VB.NET中,想使用上面的函数USBAdapterExtendSendAndReceive,
首先调用该DLL文件,并声明使用该函数
Declare Function myExtendSendAndReceiveRetryContinuous Lib "Adapter.dll" Alias _
"USBAdapterExtendSendAndReceive" (ByVal pSendPacket As Object, ByVal pReceivePacket As Object) As Integer
上面声明DLL中函数的方式已证实可行,那DLL文件中有其他不带参数的函数,用此方式已调用成功
但是,碰到调用结构体指针作为参数,就迷糊了,按照直接使用的方式出错了,如图所示
本人新手实在不知道该怎么办了,所以向大家求救来了,
需要解决的问题如下:
1.在Declared中该函数的2个参数定义的是否正确?如果不对,该如何定义?
2. 将VB.NET中已定义好的结构体传递给函数USBAdapterExtendSendAndReceive,具体该如何实现??
3. 该结构体中有个数组变量,该如何处理??
.NET中的托管与非托管的问题,DLL为非托管形式,在使用时也应该为非托管
具体可以参考http://blog.csdn.net/Donjuan/article/details/3865026