VB调用带指针的DLL函数!(dll用VC6.0写的)在线等!
有一个ymma的dll,在其中有一个函数为
int FetchCard(HANDLE hComm, BYTE cMachineNo, BYTE* pBrushInfo)
我在VB中这样声明的
Declare Function FetchCard Lib "ymma.dll " (byval hcomm as long,byval cMachineNo as byte,pBrushinfo as byte) As long
在某个事件中调用了此函数
dim i as long
dim hcom as long
dim bstr as byte
hcomm=open(1) '此函数也是DLL里的一个函数,已测试好产生个句柄
i=FetchCard(hcomm,1,bstr)
I传回的值总是说:串口接收到字符数不符
是什么原因呀!各位老大请帮忙呀!
[解决办法]
BYTE* pBrushInfo
这个pBrushInfo只占一个字节的空间吗?
[解决办法]
也许楼主接收到的数据有问题,不一定是程序的问题啊
我猜数据结构应该是:长度描述+数据+结束标记
如果从串口接受到的数据长度与最前面的长度描述不符,FetchCard可能就要返回楼主说的错误
[解决办法]
pBrushinfo as byte这句有问题,pBrushinfo是一个指针,你可以试着这样,pBrushinfo as long
[解决办法]
pBrushinfo as string
VB传递字符串实际是传递的字符串首地址即VC中的指针
[解决办法]
如果Byte*是个数组指针,那你可能比较倒霉,因为这个函数没有给除数组长度
即使你把它声明成long,CopyMemory的时候也不知道要拷贝的内存长度
我建议你最好再用C++封装一个过度的dll给vb调用