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

VB调用带指针的DLL函数!(dll用VC6.0写的)

2012-01-19 
VB调用带指针的DLL函数!(dll用VC6.0写的)在线等!有一个ymma的dll,在其中有一个函数为intFetchCard(HANDLEh

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调用

热点排行