网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> VB编程 >> 文章正文
  VB制作可输出函数的通用DLL            【字体:
VB制作可输出函数的通用DLL
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-12    
    大家知道,VB6只能制作ActiveX DLL文件,制作能输出函数的通用DLL文件通常要用到VC等工具。
正在装载数据……
实际上,VB在编译的时候加以控制,经过适当处理也是可以制作通用DLL的。使用VB_DLL_Link程序就可以利用VB编译出通用的DLL文件,此DLL文件可以被其他程序调用,例如在VB中用Declare语句调用并执行DLL中的函数。下面介绍VB_DLL_Link的使用方法:

1、安装:
本软件为纯绿色软件。下载VB_DLL_Link.exe后,双击它就可以自动安装了。你也可以手动将它复制到VB6程序目录下,将原Link.exe改名为Link2.exe,再将VB_DLL_Link.exe改名为Link.exe即可。


2、生成DLL:
安装好VB_DLL_Link后,打开VB6,新建标准exe工程,工程菜单>>移除Form1,添加一个标准模块如Module1.bas,首先向其中写入DLL的入口代码:
Function DLLMain(ByVal hInstDLL As Long, ByVal fdwReason As Long, ByVal lpwReserved As Long) As Long
    DLLMain = 1
End Function
注意参数形式一定要正确,否则编译失败。高级编程时这些参数很有用。在首次调用DLL和调用DLL的原程序退出时均会执行DLLMain函数。这个函数是必须的。

为了使VB不报错,还需加入以下代码:
Sub Main()
    '确保VB能编译
End Sub


然后就可以向Module1.bas中写入自定义函数代码了,如:
Function Add(ByVal A As Double, ByVal B As Double) As Double
    MsgBox A + B
    Add = A + B
End Function
Private Sub M(s As String)
    MsgBox s, vbInformation
End Sub


编写好代码后,保存工程,选择文件菜单>>生成exe,注意将文件扩展名改为.dll,否则本软件不能调出。然后本程序就会运行,出现一个对话框提示选择此工程需要导出的函数所在的模块文件,此例即Module1.bas,选择好后本程序主窗口会列出Module1.bas中所有的函数名。如果有多个模块,可以选择"从模块添加"按钮继续添加函数名。"添加函数名"按钮可手动添加现存的函数的名称。然后勾选需要导出的函数名,点击"编译为能输出函数的DLL"按钮,即可编译出通用DLL文件了,它能输出函数列表中打勾的所有函数。若不需要编译为通用DLL,请点击"常规编译"或按Esc键。


3、应用DLL:
编译好的通用DLL文件,可按常规DLL文件的调用方法加以调用。如上述的例子在VB中调用方法如下(请将Lib后的字符串改为上面编译的Dll文件名):
Private Declare Function Add Lib "编译好的DLL文件的路径及名称" (ByVal A As Double, ByVal B As Double) As Double
Private Declare Sub M Lib "编译好的DLL文件的路径及名称" (s As String)
Private Sub main()
    Add 9, 2    '调用DLL中的函数
    M StrConv("By 同济黄正", vbUnicode) '字符串需转换成Unicode再传递
End Sub



试试看,效果怎样?


4、注意事项:
*向DLL传递字符参数时,需转换成Unicode形式StrConv(yourString, vbUnicode),才能正确使用。
*输出函数的模块建议用标准模块bas,虽然窗体模块frm和类模块cls中的函数也可以用,但有时会出错且限制多多。
*一个工程可以有多个bas模块,其间的函数均能直接输出。
*建议用Public类型的Function或Sub作为输出函数。
*上例只是一个简单的示例,实际应用中可以在DLL工程(VB的exe工程)中加入窗体、控件、模块、类模块等,实现复杂的功能。 

vb_dll_link下载请到http://www.onlinedown.net/soft/52187.htm。

 




本文来源:http://blog.csdn.net/hz932/archive/2006/09/14/1222968.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     如何在ado中使用connect…
     vb 贪吃蛇 单人版游戏 (…
     关于在vb中进行com组件的…
     用vb6.0编写自我升级的程…
     vb自动登陆网络站点详解…
     vb打造超酷个性化菜单(…
  • 为有源头活水来——C++输入输…

  • 【游戏制作基础】网络游戏设…

  • VB.NET类的总结(一)

  • VB.NET模块的总结(二)

  • VB.NET模块的总结(一)精简版

  • 将SQL语句转换为符合VB.NET格…

  • VB6.0调用WebServices的简单…

  • Base64编码/解码VB6超精简版…

  • VB.NET的数据库基础编程

  • VB操作XML

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David