vb编写DLL学习.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vb编写DLL学习

怎样用VB编写DLL文件???你先打开VB,然后先中“ActiveX Dll”工程,然后开始编辑。编完后,保存一般是以“.cls”和“.vbw”保存。这时你选择“文件”菜单,弹出下拉框,选中“生成.dll”选项,它就会在上面弹出一个进度条“正在生成.dll文件”。生成以后是一个有好象齿轮状的图标。 如果你要引用,就开一个“标准EXE”工程,然后在“工程”选项中,单击“引用”,找到你刚才的“.dll”的文件名,在前面的复选框中打勾,就可以引用你刚才在那里面写的方法等。在vb6里建新工程时选用建立dll 做好后用vb的引用就可以了VB中创建的DLL只是COM组件,无法作为输出函数的DLL,其实这只是个错误的说法。其实MS非常狡猾,如果你是个VB疯狂发烧友的话,应该早就狂试出这种可以创建输出函数的DLL的方法。 VB编译文件实际上采取了两次编译的方法,首先是调用C2.exe产生*.OBJ文件,然后调用Link.EXE连接。如果在LINK的时候添加EXPORT选项,实际上是可以输出函数的。但是,在VB的工程选项中将这些屏蔽了。而且过分的是:VB在Build完成后会将OBJ文件删除,这样就无法手动通过Link来创建我们需要的DLL了。不过我找到一个比较龌鹾的变通的方法,就是先创建一个Exe工程,在Form_Load事件里面写下面的语句: Sub Main If MsgBox(哈哈, vbOKCancel) = vbOK Then Shell link2.exe Command$ End If End Sub 然后编译为LinkTemp.EXE,接下来将LINK.EXE改名为Link2.exe,将LinkTemp.EXE改名为Link.EXE。这样在VB调用Link.EXE时会弹出对话框,处理就会中断。这时就可以有机会将OBJ文件拷贝出来了。 然后我创建了一个ActiveX DLL工程,在这个工程里面添加一个Module并创建一个Public函数mathadd: Public Function mathadd(ByVal a As Long, ByVal b As Long) As Long mathadd = a + b End Function 编译这个工程,在Link的时候就会中断。然后把创建的Class1.obj、Module1.obj、Project1.obj备份出来。 然后就可以调用Link2.exe连接OBJ到DLL了,我的连接代码是: Link2.exe e:\vbdll\Class1.obj e:\vbdll\Module1.obj e:\vbdll\Project1.obj E:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6.LIB /ENTRY:__vbaS /EXPORT:mathadd /OUT:e:\vbdll\ProjectOK.dll /BASE:0/SUBSYSTEM:WINDOWS,4.0 /VERS 注意里面的/ENTRY和/EXPORT开关,/EXPORT开关声明了输出函数mathadd。这样就大功告成了,可以被其他语言引入,例如在VB中,只需要: Private Declare Function mathadd Lib e:\vbdll\ProjectOK.dll (ByVal a As Long, ByVal b As Long) As Long 我现在已经有了一个DLL文件,然后已经编了一个上位机程序,我想将那个DLL动态连接文件直接调用到我的程序里,因为初学VB所以不知道怎么调用已有的DLL文件,请帮忙~~~问题补充:我刚才已经把DLL文件有复制到你说的那几个文件夹里了,可是运行.EXE时还是提示找不到DLL文件啊~~~~我给做了个示例工程: HYPERLINK /kkk.rar \t _blank /kkk.rar 你下载来看看, 里面就两句: 模块中定义: Public Declare Function fnMyFunc Lib MYDLL.DLL () As Long 按钮中放入: Dim str1 As String str1 = 函数调用成功 If (fnMyFunc() = 42) Then MsgBox str1 注:我那个DLL函数就返回42,其它没有了. 2. 下面重新给个微软的示例代码: 下列示例示范如何使用 Call 语句来将控制转移到子过程、内在函数、和动态链接库(DLL)过程, 调用一个子过程。 Call PrintToDebugWindow(Hello World) 上面的语句将控制转移到下面的子过程。

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档