怎样用VB编写.DLL动态链接库文件

如何用VB编写自己的DLL文件,并调用其中的函数 如何用VB编写自己的DLL文件,并调用其中的函数? 阅读详情

一、名词解释:
DLL 的学名叫 动态链接库
二、它是干什么用的:
搜索一下有很完整详细的解释。这里,我只引用过来当中的一句话
“在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。”
三、制作自己的dll:
使用dll的意义
(以下来自MSDN)
节省内存和减少交换操作。很多进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。相反,对于每个用静态链接库生成的应用程序,Windows 必须在内存中加载库代码的一个副本。
节省磁盘空间。许多应用程序可在磁盘上共享 DLL 的一个副本。相反,每个用静态链接库生成的应用程序均具有作为单独的副本链接到其可执行图像中的库代码。
升级到 DLL 更为容易。当 DLL 中的函数发生更改时,只要函数的参数和返回值没有更改,就不需重新编译或重新链接使用它们的应用程序。相反,静态链接的对象代码要求在函数更改时重新链接应用程序。
提供售后支持。例如,可修改显示器驱动程序 DLL 以支持当初交付应用程序时不可用的显示器。
支持多语言程序。只要程序遵循函数的调用约定,用不同编程语言编写的程序就可以调用相同的 DLL 函数。程序与 DLL 函数在下列方面必须是兼容的:函数期望其参数被推送到堆栈上的顺序,是函数还是应用程序负责清理堆栈,以及寄存器中是否传递了任何参数。
提供了扩展 MFC 库类的机制。可以从现有 MFC 类派生类,并将它们放到 MFC 扩展 DLL 中供 MFC 应用程序使用。
使国际版本的创建轻松完成。通过将资源放到 DLL 中,创建应用程序的国际版本变得容易得多。可将用于应用程序的每个语言版本的字符串放到单独的 DLL 资源文件中,并使不同的语言版本加载合适的资源。
特别指出一点,对于excel来说,dll还有一个重要的意义,代码的安全性基本得到了保障。都说破解vba密码是一秒钟的事儿,破解dll可不是那么容易的事儿了。
四、自己制作dll
我们用VB6.0制作dll

1、(本帖里)图1 就是vb6.0在桌面的图标,双击它
2、弹出窗口后,先选择ActiveX DLL(图2的红框),再点击打开(图2的蓝框)
3、起个名字(图3蓝色框内文字改为 ABC)
4、先保存一下,桌面新建个文件夹,点击图3红框里的保存标志,弹出另存为对话框,选择桌面》双击刚刚建立的那个文件夹(图4蓝色框)》保存(图4红色框)》保存
5、写代码,模块里输入下面代码
Sub def()
  Dim EL As Object
  Set EL = GetObject(, "Excel.Application")
  With EL.ActiveSheet
     .Cells(1, 3) = .Cells(1, 1) & .Cells(1, 2)
  End With
  Set EL = Nothing
End Sub
(如图5所示)
6、点击文件(图5红色框),在出现的下拉菜单中点击 生成工程1.dll(k)...》(默认保存位置)点击确定
至此,Dll就制作完成了

四、使用dll
1、新建一个excel,A1单元格输入"你",B1单元格输入"好"
2、打开VBE,工具》引用》浏览》找到刚刚创建的文件夹 点击工程1.dll(图6)》点击打开》点击确定
3、插入一个模块,输入下面代码
Sub test()
    Dim a As New ABC
    a.def
    Set a = Nothing
End Sub
4、运行一下代码,C1单元格出现"你好"
至此,一个由制作到使用dll的简单示例全部完成

vb6.0创建“标准”DLL vb6.0 IDE开发环境能创建 Activex DLL工程,这类工程发布的DLL,从严格意义上VB建立的DLL并不是像VC一样的动态链接库VB建立的是ActiveX DLL,不能像kernel32.dll”那样通过“Declare Function .....”来调用的,这种ActiveX DLL是通过访问类的方式调用的:step1,注册DLL;step2,开一个“标准EXE”工程,然后在“工 阅读详情

相关推荐

硬件学习笔记(器件篇)—— 磁珠与磁环

因为有这些差别,所有经常会让人们觉得他们并不是一类器件,但实际上他们的原理是一样的。我们使用磁珠是为了利用损耗消耗高频能量,所以如果我们理解了磁珠是如何消耗高频能量的,我们就能理解磁珠的工作原理。

y_u_yu_yu_的博客 1万+

VBdll以及调用的具体实例

vb6dll和引用dll dll被称为动态链接库,是一个可由多个程序或其他dll调用用的代码和的库,使用dll可以让程序可以更加模块化,避免重复代码中出现。2.vb6dll可以包括过程和函数,函数具有返回值,过程则没有。3.当程序调用dll ,就会产生依赖项,在dll被删除后,调用dll函数的代码就会报错。

温辉的博客 9923

【C语言学习疑难杂症】第20期:0x00007FF7F2821964处引发的异常0xC0000005写入位置 0x0000000000000

检查代码中是否存在野指针访问的情况,确保在进行写入操作之前,内存已经被正确分配或初始化,并且在使用完毕后进行了正确的释放。空指针访问:代码尝试在空指针地址(0x0000000000000000)处进行写入操作,导致访问冲突。检查代码中是否存在数组越界的情况,确保在进行写入操作之前,数组的索引值在合法范围内。检查代码中是否存在空指针访问的情况,确保在进行写入操作之前,指针已经被正确初始化。野指针访问:代码尝试在已释放或未初始化的内存地址进行写入操作,导致访问冲突。

学无止境 808

如何用VB制作DLL文件

<br />

zdl480的专栏 1058

VB编写.DLL动态链接库文件

<br />VB编写.DLL动态链接库文件 <br />VB一般可以生成两种特殊的DLL,一个是ActiveX DLL和ActiveX Control(*.ocx)。这两种DLL都是VB支持 <br />的标准类型,在VB自身的例子中有,你可以参考。更详细的介绍可以参考我写的《Visual Basic编程晋级 <br />:ActiveX控件》(http://china.zealsoft.com/articles/vbactivex/)一书的"第十六章 其他ActiveX部 <br />件 "。 <br /

乔峰的专栏 2950

linux vb dll文件,详解VB.net编写DLL(动态链接库、应用程序扩展)文件

首先,我们启动VS(Visual-Studio简称),我使用的是VS2008版本。新建一个项目-选择内裤(额...不好意思)→类库 ,名称就默认吧.编写类库没有窗体设计,因此我们不能使用工具箱中的控件..类库支持Function函数,Sub过程等等....完整代码如下:Imports System.IOImports System.Security.CryptographyPublic Class...

weixin_31437055的博客 1053

6行代码最简单的VB6标准DLL工程

vb6可以做标准DLL方法很简单,利用了一个微软未公开的方法。VB6做的控件,又是标准DLL,又是COM对象,还可以单文件运行(exe),4种类型集一身,牛逼吧,具体大家可以尝试下。新建一个EXE工程,引用vbapi.dll这个COM对象 他又是标准DLL,又是COM DLL,VB6就是这么强大。有人说:VB不能生成标准dll的,这个问题是VB的老大难问题了,7行文字建立一个VB标准DLL6行代码加1行设置。5打开工程,编绎就生成了一个标准DLL,并且还可以当Com dll用,双功能。

yyzhan12ysx的博客 1061

VB6创建纯资源DLL(图片教程)

虽然vb可以把资源存在*.RES的资源文件里,一起编译成exe。但如果要换肤、多语言支持,显然DLL更方便 如何把图片、图标、自定义资源存放在DLL里面?下面我Step by Step教大家。 VB只能创建Activex DLL,所以用VC++创建纯正的DLL,这样的DLL无需注册(基于COM的才要注册)。下面以VC++ 6.0为例(VC++ 2005也差不多)。 1.打开VC++ 6.0,

zhongyhc的专栏 4773

vb.net制作动态链接库(*.dll

新建一个类库,我相信这不需要细讲了 dll有什么优点? 第一、减少应用程序体积。 第二、减少程序内存,随时调用。 第三、更新程序时,不必全局修改代码。 在网上有很多的教程,但有的是杂牌货、有的是假货 ......

weixin_56050945的博客 1996

自己编写DLL文件——注册——VB工程引用——标准EXE调用(含例子)

VB6.0的“工程-引用”中有很多控件供用户使用,但有时需要自己编写dll文件以实现某些功能。本文介绍如何自己编写一个简单的dll文件,然后在win7 64位下使用regsvr32注册,并在VB6.0中引用,最后在标准EXE中调用实现某些功能。

huang123dao的博客 8141

VB制作标准DLL动态连接库

转贴,生成有标准的dll Com组件。老外的文章。

sloder的专栏 1467

VBA操作封装为DLL组件并在EXCEL中调用

使用程序: 1、Microsoft Office Excel 2003 2、Microsoft Visual Basic 6.0 案例:在工作表的C1单元格得出A1单元格+B1单元格的值。 设计的VBA代码: Sub Test()     On Error Resume Next     Range("C1") = Cells(1, 1) +

乔峰的专栏 5万+

基于ssm的仿小鹅通知识付费微网站源代码(完整前后端+mysql+说明文档).zip

功能说明:环境说明:开发语言:Java框架:ssm,mybatisJDK版本:JDK1.8数据库:mysql 5.7及以上数据库工具:Navicat11及以上开发软件:eclipse/ideaMaven包:Maven3.3及以上服务器:tomcat7及以上。。。

上一篇: 在搜寻时显现“意外错误操作无法完成”
下一篇: IsDBCSLeadByte函数
zhenghui1
博客等级 码龄17年 48粉丝 28原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值