VisualBasic辅导在VB中调用动态连接库

上传人:汽*** 文档编号:490377361 上传时间:2022-09-26 格式:DOC 页数:3 大小:81.50KB
返回 下载 相关 举报
VisualBasic辅导在VB中调用动态连接库_第1页
第1页 / 共3页
VisualBasic辅导在VB中调用动态连接库_第2页
第2页 / 共3页
VisualBasic辅导在VB中调用动态连接库_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《VisualBasic辅导在VB中调用动态连接库》由会员分享,可在线阅读,更多相关《VisualBasic辅导在VB中调用动态连接库(3页珍藏版)》请在金锄头文库上搜索。

1、VisualBasic辅导:在VB中调用动态连接库作为一种简单易用的Windows开发环境,VisualBasic从一推出就受到了广大编程人员的欢迎。它使程序员不必再直接面对纷繁复杂的Windows消息,而可以将精力主要集中在程序功能的实现上,大大提高了编程效率。但凡事有利必有弊。VB中高度的封装和模块化减轻了编程者的负担,同时也使开发人员失去了许多访问低层API函数和直接与Windows交互的机会。因此,相比而言,VB应用程序的执行效率和功能比C/C+或Delphi生成的程序要差。为了解决这个问题,在一个大型的VB开发应用中,直接调用WindowsAPI函数几乎是不可避免的;同时,还有可能需

2、要程序员自己用C/C+等开发一些动态连接库,用于在VB中调用。本文主要讨论在32位开发环境VisualBasic5。0中直接调用Windows95API函数或用户生成的32位动态连接库的方法与规则。Windows动态连接库是包含数据和函数的模块,可以被其它可执行文件(EXEDLL、OCX等)调用。动态连接库包含两种函数:输出(exported)函数和内部(internal)函数。输出函数可以被其它模块调用,而内部函数则只能在动态连接库内部使用。尽管动态连接库也能输出数据,但实际上它的数据通常是只在内部使用的。使用动态连接库的优点是显而易见的。将应用程序的一部分功能提取出来做成动态连接库,不但减

3、小了主应用程序的大小,提高了程序运行效率,还使它更加易于升级。多个应用程序共享一个动态连接库还能有效地节省系统资源。正因为如此,在Windows系统中,动态连接库得到了大量的使用。一般来说,动态连接库都是以DLL为扩展名的文件,如Kernel32。dll、commdlg。dll等。但也有例外,如16位Windows的核心部件之一GDI。exe其实也是一个动态库。编写动态连接库的工具很多,如VisualC+、BorlandC+、Delphi等,具体方法可以参见相关文档。下面只以VisualC+5。0为例,介绍一下开发应用于VisualBasic5。0的动态连接库时应注意的问题(本文中所有涉及C/

4、C+语言或编译环境的地方,都以VC5为例;所有涉及VisualBasic的地方都以VB5为例)。作为一种32位Windows应用程序的开发工具,VB5生成的exe文件自然也都是32位的,通常情况下也只能调用32位的动态连接库。但是,并不是所有的32位动态库都能被VB生成的exe文件正确地识别。一般来说,自己编写用于VB应用程序调用的动态连接库时,应注意以下几个方面的问题:1、生成动态库时要使用_stdcall调用约定,而不能使用缺省的_cdecl调用约定;_stdcall约定通常用于32位API函数的调用。2、在VC5中的定义文件(。def)中,必须列出输出函数的函数名,以强制VC5系统将输出

5、函数的装饰名(decoratedname)改成普通函数名;所谓装饰名是VC的编译器在编译过程中生成的输出函数名,它包含了用户定义的函数名、函数参数及函数所在的类等多方面的信息。由于在VC5中定义文件不是必需的,因此工程不包含定义文件时VC5就按自己的约定将用户定义的输出函数名修改成装饰名后放到输出函数列表中,这样的输出函数在VB生成的应用程序中是不能正确调用的(除非声明时使用Alias子句)。因此需要增加一个。def文件,其中列出用户需要的函数名,以强制VC5不按装饰名进行输出。3、VC5中的编译选项结构成员对齐方式(structurememberalignment)应设成4字节,其原因将在后

6、文详细介绍。4、由于在C中整型变量是4个字节,而VB中的整型变量依然只有2个字节,因此在C中声明的整型(int)变量在VB中调用时要声明为长整型(long),而C中的短整型(short)在VB中则要声明成整型(integer);下表针对最常用的C语言数据类型列出了与之等价的VisualBasic类型(用于32位版本的Windows)。C语言数据类型在VisualBasic中声明为调用时使用的表达式ATOMByValvariableAsInteger结果为Integer类型的表达式Windows句柄BOOLByValvariableAsLong结果为Long类型的表达式BYTEByValvari

7、ableAsByte结果为Byte类型的表达式CHARByValvariableAsByte结果为Byte类型的表达式COLORREFByValvariableAsLong结果为Long类型的表达式DWORDByValvariableAsLong结果为Long类型的表达式HWN,DHDC,HMENUByValvariableAsLong结果为Long类型的表达式等INT,UINTByValvariableAsLong结果为Long类型的表达式LONGByValvariableAsLong结果为Long类型的表达式LPARAMByValvariableAsLong结果为Long类型的表达式LPDWORDvariableAsLong结果为Long类型的表达式LPINT,LPUINTvariableAsLong结果为Long类型的表达式LPRECTvariableAstype自定义类型的任意变量LPSTR,LPCSTRByValvariableAsString结果为String类型的表达式LPVOIDvariableAsAny任何变量(在传递字符串的时候使用ByVal)LPWORDvariableAsInteger结果为Integer类型的表达式LRESULTByValvariableAsLong结果为Long类型的表达式

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号