vb调用C++编写的dll,遇到struct的链表了怎么办……

assummerflower 2019-04-08 02:57:16
用vba编写个程序控制硬件电路板,厂家给的开发库里只写了用c调用的方法。尝试用vb调用,但看头文件里面的声明,涉及到链表结构的struct数据返回。完全不知道在vba里如何用declare进行声明啊……

在dll的头文件里,该结构形式如下
struct usb_relay_device_info
{
unsigned char *serial_number;
char *device_path;
usb_relay_device_type type;
usb_relay_device_info* next;
};
dll中程序执行语句为
/*Enumerate the USB Relay Devices.*/
struct usb_relay_device_info EXPORT_API * usb_relay_device_enumerate(void);

返回来的这个struct信息,要怎么样在vb中进行declare声明才能正常接收到?


...全文
114 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
assummerflower 2019-05-27
  • 打赏
  • 举报
回复
引用 4 楼 milaoshu1020的回复:

dim urdi as usb_relay_device_info
dim retval as long
retval = usb_relay_device_enumerate
memcpy urdi,retval,lenb(urdi)

应该是这么用吧,不对之处请指教.
感谢大神,已经解决了
milaoshu1020 2019-04-09
  • 打赏
  • 举报
回复

dim urdi as usb_relay_device_info
dim retval as long
retval = usb_relay_device_enumerate
memcpy urdi,retval,lenb(urdi)

应该是这么用吧,不对之处请指教.
assummerflower 2019-04-09
  • 打赏
  • 举报
回复
引用 1 楼 milaoshu1020的回复:
个人建议用ATL做个适配器,将接口用c++转换为ActiveX格式的方法或者属性,然后用VB调用.
直接调用DLL也可以,不过usb_relay_device_type是什么类型好像没有说明.
而且字符串只能用指针,我帮你写一下,不一定对:

type usb_relay_device_type
'...
end type

type usb_relay_device_info
serial_number as long
device_path as long
type_ as usb_relay_device_type
next as long
end type

declare function usb_relay_device_enumerate() as long

关于long类型指针的使用,可能需要用到memcpy;
谢谢大神指点。 usb_relay_device_type 是个枚举,估计是int。 还有,您定义的这个usb_relay_device_info的type用在哪里了?
assummerflower 2019-04-09
  • 打赏
  • 举报
回复
谢谢大神指点。
usb_relay_device_type 是个枚举,估计是int。
还有,您定义的这个usb_relay_device_info的type用在哪里了?
milaoshu1020 2019-04-08
  • 打赏
  • 举报
回复
个人建议用ATL做个适配器,将接口用c++转换为ActiveX格式的方法或者属性,然后用VB调用.
直接调用DLL也可以,不过usb_relay_device_type是什么类型好像没有说明.
而且字符串只能用指针,我帮你写一下,不一定对:

type usb_relay_device_type
'...
end type

type usb_relay_device_info
serial_number as long
device_path as long
type_ as usb_relay_device_type
next as long
end type

declare function usb_relay_device_enumerate() as long

关于long类型指针的使用,可能需要用到memcpy;

1,486

社区成员

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

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