VB6.0_DLL制作工具(Ver2.05)

所属分类:Windows编程
开发工具:Visual Basic
文件大小:74KB
下载次数:9
上传日期:2019-05-10 07:48:14
上 传 者笑哥.
说明:  VB6.0本身只支持制作ActiveX DLL文件。对于用VB6.0制作“标准DLL”(当然这 是“狭义”的标准DLL:指带导出函数、直接调用的DLL,不用通过对象来调用),网 上早已出现过不少的争论,但争来争去,似乎都是谁也没说服谁。网上也流传过不少 的“用VB6.0制作标准DLL的方法”,虽然或繁或简,还有的做成了VB6.0的插件,但 是这些方法的实质如出一辙,做出来的DLL文件,也仅仅是“带导出函数的ActiveX DLL”而已。虽然带有导出函数,可以直接通过"Declare"来使用了,其实它们并没有 彻底摆脱ActiveX DLL的影子。
(VB6.0 itself only supports the production of ActiveX DLL files. For making "standard DLL" with VB6.0 (of course this It is the standard DLL of "narrow sense". It refers to the DLL with derived function and direct invocation. It does not need to be invoked by objects. There have been many debates, but it seems that no one has convinced anyone. There have been a lot of them on the Internet. The method of making standard DLL with VB6.0 is complicated or simple, and some of them are plug-ins of VB6.0. The essence of these methods is the same. The DLL files produced by these methods are only "ActiveX with derived functions". DLL. Despite having derived functions that can be used directly through Declare, they are not. Get rid of ActiveX DLL completely.)

文件列表:
VB6.0_DLL制作工具(Ver2.05) (0, 2017-09-29)
VB6.0_DLL制作工具(Ver2.05)\Link.exe (73728, 2016-08-05)
VB6.0_DLL制作工具(Ver2.05)\StdDLL_模板 (0, 2016-08-03)
VB6.0_DLL制作工具(Ver2.05)\StdDLL_模板\mod_Main.bas (1935, 2017-09-29)
VB6.0_DLL制作工具(Ver2.05)\StdDLL_模板\StdCall_DLL.vbp (821, 2017-09-29)
VB6.0_DLL制作工具(Ver2.05)\Ver2.05_说明.txt (989, 2017-09-29)
VB6.0_DLL制作工具(Ver2.05)\新建工程.gif (28410, 2015-01-23)
VB6.0_DLL制作工具(Ver2.05)\窗口界面.png (14584, 2013-10-09)

〖说明〗 VB6.0 DLL制作工具   今天看到我上次发布的DLL制作工具,也还是有一定数量的朋友对此有兴趣(当 然不使用VB6.0的、甚至咬定“VB6.0一无是处”的人,肯定是不屑一顾)。虽然人数 不是特别多,我还是感到很高兴。再此,发布一个修订版。这个版本的主要改进是:   ① 增加了链接错误的反馈,把链接器输出的错误信息显示给你看(如果成功, 就没有反馈;出错信息太多时,因篇幅限制,只显示了前面部分约1KB字节内容)。 前一版本链接出错后,你“看不到输出文件”,也没得到任何提示。   ② 增加了对 DllMain( ) 函数的支持,这对其它开发环境使用你编译出来的 DLL文件提供了基础条件。当然可以不用DllMain,这样只用在VB6.0中通过 Declare 来调用导出函数(前一版本的不支持DllMain( ),这样的DLL只能用在VB6.0中)。 有DllMain( )函数,你的DLL文件代码能否在其它环境下正确执行,那就得看你的功 力了。 ^-^   修订版的使用方法,跟前一个是一样的。具体参考前一版的说明文件。 内容如下: ========================================================================== ⒈ 概述   VB6.0本身只支持制作ActiveX DLL文件。对于用VB6.0制作“标准DLL”(当然这 是“狭义”的标准DLL:指带导出函数、直接调用的DLL,不用通过对象来调用),网 上早已出现过不少的争论,但争来争去,似乎都是谁也没说服谁。网上也流传过不少 的“用VB6.0制作标准DLL的方法”,虽然或繁或简,还有的做成了VB6.0的插件,但 是这些方法的实质如出一辙,做出来的DLL文件,也仅仅是“带导出函数的ActiveX DLL”而已。虽然带有导出函数,可以直接通过"Declare"来使用了,其实它们并没有 彻底摆脱ActiveX DLL的影子。   不过,用我这个制作工具链接的DLL,就不再是ActiveX DLL了。可以用M$出品的 Dependency Walker工具对制作出来的DLL文件查看对比,就明显看出区别:以前网流 传的方法做出的DLL,如图片“DllTest”中所示,都会有四个如影随形的函数: DllRegisterServer、DllUnregisterServer、DllGetClassObject、DllCanUnloadNow 而用我的这个工具做出来的DLL文件,这几个函数就彻底消失了!因为根本不需要任 何Class模块来做承载体。效果如图片“MD5Fun”中所示。   当然,由于开发平台的关系,做出来的DLL代码要能执行,当然也基本是离不开 MSVBVM60.DLL的支持。用VB6做出的东西要摆脱它,可不是一般的功力可及的!!! ⒉ 软件安装   最初是打算做个安装程序的,不过后来觉得没什么意思。毕竟这也基本上是个没 太大应用价值东西,可能大家也只是“试一下”而已,并且这个“安装”并不复杂, 不想再折腾那么多了。 “手工安装”过程如下:   ①在VB6安装目录中,把原来的“Link.exe”名字改成Link2。注意:不要用其它 名字,更不能把它删除了!因为最终的链接操作,仍然是调用这个程序来完成的,我 的程序只是做了一些“前期工作”。   ②把我的“Link.exe”复制到VB6安装目录中。至此,最关键的操作就完成了。   ③安装“Standard DLL”模板。把 StdDLL.vbp和Dll_Main.bas 这两个文件,复 制到“VB6安装目录\Template\PROJECTS”中就行。如果Template或PROJECTS目录不 存在,可以自选创建(注意路径的层次关系)。   安装模板后,在新建工程中,就能使用这个模板来创建标准DLL框架了,如图片 “新建工程”中所示。如果你安装的是企业版,它带的模板可能比较多,这个模板可 能排在最后面去了,你需要拖动右边的滚动条,让它显示出来。   “标准DLL模板”也可以不用安装。如果要用这个工具做“标准DLL”,只要新建 一个“标准EXE工程”,然后:移除窗体模块Form1、新建一个“模块”Module1,再 在Module1中写个Sub Main()过程,最基础的框架就完成了! 比如这样写: Private Sub Main(): End Sub 甚至,你可以 Private/Public 都不写,就写“Sub Main(): End Sub”就行了!   剩下的,就是你自己的DLL所用的Function、Sub等要做的事了。 ⒊ 软件界面   你所能看到的,就是一个窗口,如图片“窗口界面”中所示。左边树形列表,是 各个可用的模块,以及其所包含的可用导出函数。右边是列表框,列出你已经选定添 加的导出函数。青色背景的标签,显示内容是:你在树形列表中选定的函数或模块所 在的“源文件”路径。“基址地址”含义没什么可解释的,一般还是不要改它为好。 另外,输入的数值直接按16进制解释,并且 &H或0x 字头不要输入。添加好需要的导 出函数后,点“确定”就可链接好DLL文件。 如何“添加导出函数”,请继续往下看…… ⒋ 软件操作   在你的源代码编写好后,请先保存一次你的工程源码(各模块都必须保存,代码 作了修改再次编译时,可以不用保存),然后在VB6.0的IDE中,菜单操作: “文件”-→“生成xxxxx.xxx(K)...”[注:这儿显示的是.exe还是.dll,不用管] 然后在弹出的窗口中,选择好输出的磁盘路径及文件名。这步有个非常重要的地方: 在第一次编译时,一定要在输出文件的后面加上“.dll”(大小写都可以)。一定要 注意,如果你不指定.dll后缀,它就是链接成.exe文件了!但你再次对本工程编译链 接时,直接确定就行。   选择好输出路径、输出文件名,如果指定了.dll,点“确定”后,就会出现本软 件的窗口。要添加导出函数,可以在左边树形列表的节点中,点“模块名”,再点右 边的按钮“添加该模块”,把选定模块中的所有函数添加到导出函数列表;或者以稍 慢的速度“双击”函数节点,把选定的一个函数添加到导出函数列表(点太快不行, 它没响应的。它没有双击事件,并且太快了鼠标消息还会被吃掉)。如果要删除已经 添加的函数,则在右边列表框中,双击相应项目移除一个,或点按钮“清空列表”全 部删除。5个按钮都设有访问键,大家一看界面就知道了,我不必多说。   如果某函数已经在导出列表中,则左边树形列表的函数节点上,函数名左边的图 标会显示一个绿色的“钩”号,而没有添加的函数,它的图标只是一个白框。当你在 左边树形列表的函数节点上,点中已经添加的函数,则右边列表框中对应项目也会自 动被选定;如果在树形列表中选定的函数未添加,或者选中的是模块节点,则右边列 表框就没有项目被选定。同样,当你在选定右边列表框中的任意一个项目时,左边树 形列表对应的函数节点也自动选定。任何时候,青色标签中都显示着树形列表函数节 点或模块节点对应的源文件路径。   点“取消”可以放弃链接操作(会询问)。   点“复位”可以恢复前一次选定的导出函数列表(本工程如果是第一次编译,则 跟“清空列表”的效果一样)。   如果关闭窗口,则直接放弃链接操作(不询问)。   当选择后导出函数列表后,点“确定”,随后就进行DLL文件的链接操作。这个 时候,你当前的工程模块信息、导出函数列表信息等,会在临时文件夹中,保存到 "CompInfo.db"文件中(这个文件内容你别改,否则可能失效了),这样,当你对源 码进行了修正,再次编译链接时,可以不用再次进行导出函数的添加操作。   “提醒选择导出函数列表”选项默认选定,这样每次编译链接,窗口都会弹出。 你也可以在“确定”前去掉它的钩选,这样,如果工程中“可用的导出函数列表”没 有变化,比如你只是对各个Sub/Function的代码做了修改,或加了、减了个类模块什 么的(因为类模块、窗体模块都不支持“导出函数”),控制窗口就不再弹出,按已 经选定的导出函数列表进行链接操作。   当你在任意标准模块中增加或删除了Sub/Function时,或者改变输出文件路径、 输出文件名时(这时要再次指定.dll后缀!),控制窗口就会重新出现了。如果你把 临时文件夹中的"CompInfo.db"文件删除后再编译,控制窗口也会出现。

近期下载者

相关文件


收藏者