- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在vb中调用dl的方法
1 制作好DLL之后,就可以用VB调用它,实现VB调用C程序。VB程序要使用DLL中的函数,首先必须要有特殊的声明,用Declare声明语句在窗体级或模块级或全局模块的代码声明段进行声明,将动态链接库中的函数声明到VB中,供VB程序调用。
语句格式为:Declare Sub 过程名Lib [ Alias 别名]([ByVal 参数AS类型]),或为Declare Function函数名Lib [Alias 别名]([ByVal 参数AS类型])AS类型在声明中首先用Declare关键字表示声明DLL中的函数。在C语言中有的函数类型为VOID,它表示不具有返回值,则必须用关键字Sub将其声明成过程。有的函数具有返回值,则必须用关键字Function将其声明成函数,并且在声明语句的最后要用AS关键字指明函数返回值的类型。
例如上面的ADD.DLL在VB中就可以声明为:
Declare Function ADD Lib “c:\ADD.dll” ByVal X AS Integer, ByVal Y AS Integer ,ByVal filein asstring)AS Integer
通过此声明语句将函数ADD声明到VB中,便可直接调用。
2、dll文件中的函数好像是C语言写的,
// 函数名:int __stdcall GetMacNo int *MacNo
// 功能:获取卡机的卡机号 单机时
// 参数: MacNo[0]-被读出的卡机号
// 返回值:0-成功,
// 2-PC接收超时,
// 3-应答错误
dll的文件名是COMM232.dll
函数的形参int *MacNo是指针吗?
在VB中应该怎么声明和调用该函数?
VB里也可以定义指针吗?
问题补充:vb调用dll文件中的函数我是会的,但这儿的形参有一个星号才不知是怎么一回事,
我是这样声明的对吗?
Public Declare Function GetMacNo Lib COMM232.dll ByVal MacNo As Integer As Integer
又应该怎么调用呢?要先定义一个指针的变量再传给*MacNo还是要怎么做?
都说了MacNo是被读出的卡机号,那么就是传址的了。
dim l as integer
dim m as integer
l GetMacNo m
if l 0 then label1.caption 卡机号: m
elseif l 2 then msgbox PC接收超时
elseif l 3 then msgbox 应答错误
end if
Windows动态连接库是包含数据和函数的模块,可以被其它可执行文件(EXE、DLL、OCX 等)调用。动态连接库包含两种函数:输出(exported)函数和内部(internal)函数。输出函数可以被其它模块调用,而内部函数则只能在动态连接库内部使用。尽管动态连接库也能输出 数据,但实际上它的数据通常是只在内部使用的。使用动态连接库的优点是显而易见的。将应用程序的一部分功能提取出来做成动态连接库,不但减小了主应用程序的大小,提高了程序 运行效率,还使它更加易于升级。多个应用程序共享一个动态连接库还能有效地节省系统资源。正因为如此,在Windows系统中,动态连接库得到了大量的使用。
一般来说,动态连接库都是以DLL为扩展名的文件,如Kernel32.dll、commdlg.dll等。但也有例外,如16位Windows的核心部件之一GDI.exe其实也是一个动态库。编写动态连接库的工具很多,如VisualC++、BorlandC++、Delphi等,具体方法可以参见相关文档。下面只以Visual C++6.0为例,介绍一下开发应用于VisualBasic6.0的动态连接库时应注意的问题(本文中所有涉及C/C++语言或编译环境的地方,都以VC为例;所有涉及Visual Basic的地方都以VB 为例)。
作为一种32位Windows应用程序的开发工具,VB生成的exe文件自然也都是32位的,通常情况下也只能调用32位的动态连接库。但是,并不是所有的32位动态库都能被VB生成的exe 文件正确地识别。一般来说,自己编写用于VB应用程序调用的动态连接库时,应注意以下几个方面的
问题:
1、生成动态库时要使用__stdcall调用约定,而不能使用缺省的__cdecl调用约定;__stdcall 约定通常用于32位API函数的调用。
2、在VC中的定义文件(.def)中,必须列出输出函数的函数名,以强制VC系统将输出函数的装饰名(decoratedname)改成普通函数名;所谓装饰名是VC的编译器在编译过程中生成的输出函数名,它包含了用户定义的
您可能关注的文档
- 国内权威3G软工程师培训.docx
- 国内近三年海明研究综述.doc
- 国古代思想宝库元复习设计.doc
- 国外比较著名的习科学研究中心简介.doc
- 国外电子商务现2014.docx
- 国学《声律启蒙讲座稿.doc
- 国学修养与人生慧考试.doc
- 国学名师姚淦铭智慧孔子带到申城.doc
- 国学精义之诸子家——名家论坛第51部.docx
- 国家公务员考试测真题答案下载【完整打印版】.doc
- 某县纪委监委开展“校园餐”突出问题专项整治工作汇报22.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告66.docx
- 某县委常委、宣传部部长年度民主生活会“四个带头”个人对照检查发言材料.docx
- XX县委领导班子年度述职述廉报告3.docx
- 某县纪委关于校园餐问题整治工作落实情况的报告.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告22.docx
- 某县税务局党委领导班子年度民主生活会“四个带头”对照检查材料.docx
- 某县委书记在县委常委班子年度民主生活会专题学习会上的讲话.docx
- 某县纪委校园餐问题整治工作落实情况的报告.docx
- 某区委副书记、区长年度民主生活会对照检查材料.docx
最近下载
- 心肺运动试验课件.ppt
- GBT19001-2022《质量管理体系 要求》.docx
- 病媒生物防制投标方案(完整版).docx
- 幼儿园小学美术PPT课件教案教程创意幼教手工《备年货》.pptx
- 普通高中政治课程标准测试题及答案.pdf
- 新教材2024届高考语文二轮专项分层特训卷第二部分组合循环练练习23语言文字运用 现代文阅读Ⅱ.doc VIP
- GB_T 37364.3-2024 陆生野生动物及其栖息地调查技术规程 第3部分:兽类.pdf
- 《介入性超声》课件.pptx VIP
- 《 企业突发环境事 件风险分级方法》(HJ 941-2018).pdf
- 074-万达广场范围内充电设备安全管控规范.docx VIP
文档评论(0)