一、如何使用标准DLL编译工具
使用方法很简单。首先,将C:\Program Files\Microsoft Visual Studio\VB98\link.exe改名为link2.exe
其次,将本文件link.exe复制到C:\Program Files\Microsoft Visual Studio\VB98文件夹中即可。
本工具让你即可使用VB6原默认方式编译,也可编译WINDOWS标准DLL。
二、如何用VB6生成WINDOWS标准DLL
说明:以下内容源自Iczelion的Win32汇编教程中“动态链接库”一节,有改动。
(原文请见罗云彬汇编网站http://211.90.241.130:22366/list.asp?part1=1&part2=4)
对WINDOWS标准DLL而言,每一个DLL必须有一个入口点函数,WINDOWS每一次在做下面的动作时会调用该入口点函数:
当动态链接库被加载时
当动态链接库卸载时
同一进程的线程生成时
同一进程的线程退出时
入口点函数的名称无所谓,在VB6中,我们姑且作如下定义
Const DLL_PROCESS_DETACH=0 '动态链接库从进程的地址空间卸出时
Const DLL_PROCESS_ATTACH=1 '动态链接库第一次插入进程的地址空间时
Const DLL_THREAD_ATTACH=2 '新线程生成
Const DLL_THREAD_DETACH=3 '线程销毁
Function DllEntry(ByVal hInstDLL As Long, ByVal reason As Long, ByVal reserved As Long) As Long
Select Case reason
Case DLL_PROCESS_ATTACH
'MsgBox "动态链接库第一次插入进程的地址空间"
DllEntry = 1
Case DLL_PROCESS_ATTACH
'MsgBox "动态链接库从进程的地址空间卸出"
DllEntry = 0
Case DLL_THREAD_ATTACH
'MsgBox "新线程生成"
DllEntry = 1
Case DLL_THREAD_DETACH
'MsgBox "线程销毁"
DllEntry = 0
End Select
End Function
该入口函数DllEntry共有三个参数:hInstDLL, reason, reserved,只有前面两个是重要的。
hInstDLL:是该动态链接库模块的句柄。它和进程的实例句柄不一样。如果您以后要用,可以保存它,因为以后再要获得它不容易。
reason:根据不同的时机,传入的值可能是下面的四个值中的一个:
DLL_PROCESS_ATTACH 动态链接库第一次插入进程的地址空间时。当传入的参数是该值时,您可以做一些初始化的工作。
DLL_PROCESS_DETACH 动态链接库从进程的地址空间卸出时。您可以在此做一些清理的工作。譬如:释放内存等。
DLL_THREAD_ATTACH 新线程生成。
DLL_THREAD_DETACH 线程销毁。
如果想要库中的代码继续执行,返回TRUE,否则返回FALSE,那样动态链接库就不会加载了。譬如:您想分配一块内存,如果不成功的话就退出,这时您就可以返回FALSE。那样动态链接库就不会加载了。
您可以加入的函数,它们的位置并不重要,把它们放在入口点函数的前面或后面都可以。只是如果您想要它们能被其它的程序调用的话,就必须把它们的名字放到模块定义文件(.def)中去。
模块定义文件.def,将由本工具自动为您生成,而无须您的干预。
Windows标准DLL编译工具
5星 · 超过95%的资源 需积分: 9 23 浏览量
2008-12-04
16:25:18
上传
评论
收藏 16KB ZIP 举报
xlfancy
- 粉丝: 3
- 资源: 5
最新资源
- c语言文件读写操作代码.pdf
- C/C++,图形学-朱莉娅分形集(Julia Fractal)的计算方法与源程序
- 基于paddle+flask实现的猪只识别计数python源码数据集+模型+使用说明(高分项目).zip
- C/C++,树算法-K叉树(k-dimensional-tree)的计算方法与源代码
- msql pre-test
- C/C++,树算法-最小K叉树的计算方法与源程序
- 焊点标注-B07焊点111111111111111111.zip
- C/C++,树算法-K叉树的修剪(删除)算法及其源程序
- QT6实战-QML与C++联合编程教程
- C/C++,图算法-使用K近邻算法查找未知点组的计算方法与源程序
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页