永发信息网

在VB中调用动态连接库时用户自定义类型参数的传递方法

答案:1  悬赏:30  手机版
解决时间 2021-04-04 22:04
在VB中调用动态连接库时用户自定义类型参数的传递方法
最佳答案
VB自定义类型参数的传递

用户自定义类型在VB中是一种重要的数据类型,它为编程者提供了很大的灵活性,使开发人员可以根据需要构造自己的数据结构。它相当于C/C++中的结构类型(structure)。在VB中,允许程序员以传址的方式将自定义数据类型参数传入动态库,DLL过程也可以将修改后的参数返回VB程序。但是,在VB中仍然不支持以传值的方式传递VB自定义类型参数。

传递VB自定义类型参数时,必须确保VB中的数据类型的成员与动态库中的结构成员是一一对应的,所占空间也必须严格一致。这里所说的一一对应,不仅是指VB

中的所有结构成员在动态库的结构中都必须有对应的元素,而且它们在数据结构中定义的顺序也必须严格一致,这是VB中使用的"数据结构成员对齐方式"决定的。在VB
中,数据结构使用双字对齐方式(4-byte
alignment),因此,在用户自己生成用于VB调用的动态连接库时,也必须把编译选项"structure member alignment"
设为4字节(如前文所述)。

所谓结构成员对齐方式是指一个数据结构内部,其成员的排列方式。譬如,在VB中,其对齐方式是4字节,这就好象在一个数据结构内部分成了很多个4字节大小的小单元,如果相邻两个或多个数据成员的大小可以放在一个单元中,那么就放在一起;否则这些小单元中可能
会出现未用的空字节。我们来看下面一个数据类型:
Type TestType m1 as Integer m2 as Byte m3 as Long End Type

它的三个成员的大小加起来是2+1+4=7。但是,由于m1和m2的字节总长度是3,小于 4,它
们就存放于一个单元中;但该单元剩下的一个字节不足以放下一个Long型的成员m3,于是m3
就被放在下一个单元中,它们之间就有了一个未用的空字节;因此,整个结构所占实际长度是8
字节。同理,如果将m3和m2的位置交换一下,它所占的尺寸就变成了9字节。可见,成员在结构 中的声明顺序也是非常重要的。

另外,在VB 中还可以把一个函数的指针传递到动态库中,方法也并不复杂。但笔者强烈建议最好不要这么做,因为这样一来VB
应用程序就几乎完全丧失了它所应有的安全性。如果 确实需要传递函数指针的话,那么还是编一个C/C++
的程序来完成这项工作吧。以上介绍VB自定义类型参数的传递。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
描写天空的句子英文,描写天空的句子
名字中有带白字的茶叶是什么
不同厂家的tpr包胶温度为什么不一样
在①纯碱、②汞、③食盐、④熟石灰、⑤干冰、
去商场如何找工作啊,也没有招聘启事
山西省阳泉市至河北省西柏坡,从g207走,有多少
自从我家换了邻居家的床.注邻居搬家.搬不了送
99开头的6位qq号哪个年代能申请
请问重庆龙头寺汽车站有到大足的汽车吗
HB,CD,BBC的全称是什么,是什么意思?
+1(206)727-7592是什么电话
两点十分有什么特别的意思?
下列说法错误的是A.直线没有端点B.两点之间的
菜刀是什么材料
梅氏族谱在哪里可以买到?
推荐资讯
AMADA数控冲床 EM2510NT主要规格
看第十题,不用看算式。
无线电通讯中的“ten-four”代表什么意思?
阿修罗动漫结尾语录,动漫中有哪些热血,有哲
肇庆桃花岛好玩吗
我一个月前去做了个胃镜,检查结果是浅表性胃
苹果手机缝隙怎么清理,手机淘宝如何清理浏览
抱子甘蓝是包菜的迷你版吗
关于鹅在水中的诗句,有关鸳鸯的诗句
好听的CN名字。
临时突然辞退工人违反劳动法那条
资深钓鱼人分享夏季野钓时如何诱鱼
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?