07年最后一次紧急呼救:VB如何调用这个复杂的C++的DLL,先谢谢大家啦。

zhqi 2007-12-29 11:01:27
07年最后一次紧急呼救:VB如何调用这个复杂的C++的DLL,先谢谢大家啦。

DLL的中函数的参数是结构体,在C++中结构体定义如下:

struct ZT_USBBOARD{
long lIndex;
HANDLE hHandle;
short nCh;
long lData;
long* plData;
long lCode;
};

DLL中的函数定义如下:

long APIENTRY OpenUSB7kC(ZT_USBBOARD* bs)

问题:
1、如何引用参数为结构体的DLL?
2、结构体中HANDLE类型,在VB中如何定义?
3、指针类型的变量(如long*),在VB中如何定义?

呵呵,小弟第一次学着用VB调用C++ DLL,就遇到那么复杂的情况。

最好能给我一个实例代码:

Public Type ctrlStruct
usbIndex As Long
....
'这里如何写????
End Type

Private Declare Function OpenUSB7kC Lib ".\Usb7kC.dll" (ByRef pResult As ctrlStruct) As long
'这样写也不知道对不对??


请大家帮帮我,十分感谢!!!
...全文
94 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
caofusheng 2007-12-29
  • 打赏
  • 举报
回复
上边我写错了



Public Declare Function OpenUSB7kCLib "Usb7kC.dll" Alias "OpenUSB7kCLibA" (ByRef pResult As ZT_USBBOARD) As Long
Public Type ZT_USBBOARD
lIndex As Long
hHandle as long
nCh as integer
lData as long
plData as long
lCode as long
End Type
caofusheng 2007-12-29
  • 打赏
  • 举报
回复

Public Declare Function OpenUSB7kCLib "Usb7kC.dll" Alias "OpenUSB7kCA" (ByVal lIndexAs Long, ByVal hHandle As long , ByVal nCh As integer , ByVal lData As Long, plData As Long,lCode As Long) As Long

Public Type ZT_USBBOARD
lIndex As Long
hHandle as long
nCh as integer
lData as long
plData as long
lCode as long
End Type
Tiger_Zhao 2007-12-29
  • 打赏
  • 举报
回复
C中的long类型应该是Int64吧,VB中没有直接的数据类型可对应,不过可以用Currency代替。
因为Currency其实是定点小数,所以VB中Currency类型的0.0001对应C中long类型的1,按照这个比率处理就可以了。
chenhui530 2007-12-29
  • 打赏
  • 举报
回复
Public Type ctrlStruct
usbIndex As Long
hHandle as long
nCh as integer
lData as long
plData as long
lCode as long
End Type
junki 2007-12-29
  • 打赏
  • 举报
回复
楼上方法可以,vb参数默认是按传址进行的

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧