VB创建能作为输出函数的DLL.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
转帖] VB创建能作为输出函数的DLL DLL, 函数, 输出 QQ:594363468 DLL文件(即Dynamic Link Library,动态链接库)作为系统的一个重要的组成部分,除了一些小程序外,我们几乎能在所有软件中看到DLL文件,而且如果使用VB写的一些收费软件有一个DLL代替关键函数,想破解都难了。因此,我们就有必要来学习如何编写DLL。 对于很多初学VB的网友来说,VB是一门比较简单的语言,而MicroSoft公司在开发VB时,也增添了很多功能。所以,我个人觉得VB除了部分不足之外还是挺不错的,当然我指的不足是主要是VB运行库方面的问题。 对于很多VB初学者来说,都会有这么一个错误的认识——VB中创建的DLL只是COM组件,无法作为输出函数的DLL(即VB写的DLL是不完整的DLL)。然而,对于一些VB的高手来说,他们就知道应该如何写具有返回值的DLL。其实,国外早已经有人做出了在VB中制作标准DLL的Add-Ins了,而且在网上也有对于写VB创建能作为输出函数的DLL的相关文章。今天,我再来讲讲这个话题——VB创建能作为输出函数的DLL 对于VB编写DLL,按照我的经验,主要分为两步:一、“安内”,二、“攘外” 首先,“攘外必先安内” 我们要知道如何使DLL拥有一个能被调用的API函数。很简单,我不想多说,就是在Module里面写一个Public的Function 接下来,我们就可以“攘外”了 那么,先来介绍一下编译技术 编译器的编译技术可以分为Native Compile(自然编译)与P-Code Compile(伪编译)两种。 自然编译是编译器将高级语言转换为汇编代码,并经链接生成EXE程序的过程。 伪编译是编译器将高级语言转换为某种编码后,将能解释、执行此编码的一段程序一同链接,生成EXE程序。 伪代码P-Code,最早应该叫做Pascal-Code,其名称起源于一个Pascal编译器使用的“中间代码”编译技术。现在一般作为Pseudo-code(伪代码)或Packed-code(压缩代码)简称。 采用伪代码编译时,每个VB源文件(包括.frm(窗体)、.bas(标准模块)、.cls(类模块))经VB IDE编译后各自生成相应的.obj文件,交链接程序Link.exe生成伪编译的可执行文件(EXE、DLL、OCX等)。 而用自然编译时,每个VB源文件由C2.exe编译生成汇编代码,生成相应的obj文件,再由Link.exe链接成为完整的可执行文件。 别看编译只有两步,其实,有大玄奥在里头。。。 MicroSoft公司,可以说是十分的狡猾,因为在默认的方式下,VB编译的两步使用到的命令行都是他们设定好的,所以,跳过了很多有用的部分,包括我们今天讲的输出函数部分。如果在LINK的时候添加EXPORT选项,实际上是可以输出函数的。但是,在VBLinkd的命令行中将这个选项部分跳过了。而且过分的是:VB在构造EXE后会将编译出来的OBJ文件删除,这样就无法手动通过Link来创建我们需要的DLL了。 根据前人的方法,加上自己修改,用一个比较龌龊的方法来变通 打开“VB6.0”,新建一个“标准EXE 工程”,把Form移除,添加一个Module 在模块里输入一下代码: Sub Main() If Command = Then Exit Sub 命令行不为空 Dim intCMD As Integer Clipboard.Clear 清空剪贴板 Clipboard.SetText Command 将命令行复制到剪贴板 去掉 复制到剪贴板 LINK 速度会快些 intCMD = MsgBox(编译命令行如下: vbCrLf Command vbCrLf 点击“是”继续编译,点击“否”编译DLL,点击“取消”中断编译, vbYesNoCancel + vbInformation, 编译) Select Case intCMD Case vbYes 选择“是” 继续编译 Shell VBLINK Command, vbHide Case vbNo 选择“否” Dim FuncName As String, cmd As String, l As Integer FuncName = InputBox(请输入 输出的函数名称(对个函数 请用英文半角分号“;”分开), _

文档评论(0)

803322fw + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档