`
金笛子
  • 浏览: 33248 次
社区版块
存档分类
最新评论

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

 
阅读更多
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:0x11000000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /Dll /INCREMENTAL:NO /OPT:REF /MERGE:.rdata=.text /IGNORE:4078
  
   注意里面的/ENTRY和/EXPORT开关,/EXPORT开关声明了输出函数mathadd。这样就大功告成了,可以被其他语言引入,例如在VB中,只需要:
  
   Private Declare Function mathadd Lib "e:\vbdll\ProjectOK.dll" (ByVal a As Long, ByVal b As Long) As Long

转自bbs.sendsms.cn
分享到:
评论

相关推荐

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

    VB中创建的DLL只是COM组件,无法作为输出函数的DLL,其实这是MS非常狡猾的手段...

    VB.NET自定义类库(dll)的编写和引用的示例.rar

    DLL(动态链接库)是一个很有用的东西,比如说,你有一段经常要用到的代码,可以作为标准代码使用, 就可以把它封装成DLL文件,以后要用到的时候,只需要引用一下就可以了, 没有必要重复写这部分代码。 在开发大...

    VB创建线程动态链接库(VBCreateThread.dll)

    特别声明:此DLL仅限于VB爱者研究使用,使用者请注明出处(首发于VBGOOD 链接地址http://www.vbgood.com/thread-108165-1-1.html),不得用于商业用途,本人也不对使用此DLL产生的任何后果负责。 文件名:...

    vb的标准DLL生成器

    为了编译出可供程序直接声明的动态链接库,可以使用此程序。 1.进入vb安装文件夹,将“link.exe”重命名为“link2.exe”。 2.将本文件夹下的“link.exe”,复制到vb安装目录下。 3.编写DLL,将取得的OBJ文件放在...

    微软.NET离线运行库合集V2021.09.01.rar

    DLL 动态链接库: atl70.dll 7.0.9975.0 x86; atl71.dll 7.10.6119.0 x86; comct232.ocx 6.0.98.39 x86; comct332.ocx 6.7.0.9839 x86; comctl32.ocx 6.0.98.39 x86; comdlg32.ocx 6.1.98.41 x86; dblist32....

    VB调用VC编写的DLL

    VB调用VC编写的动态链接库DLL

    VB调用动态连接库(dll)

    VB程序调用C语言编写的动态连接库(dll)

    VB编写的二维条码编码软件源码

     在VB程序调用条码制作函数前,先调用SetConfile函数,将配置文件名传递给动态链接库。否者条码制作函数使用默认参数进行编码。  如:在制作PDF417条码前,先将“MakeCode.ini”参数配置文件传递给EnCodePdf.dll...

    C++ 写的串口通信 DLL文件

    C++写的COM DLL文件,可用VB,VC引用.

    查看系统所有的窗口,包括隐藏的和不隐藏的(终极版)

    运行稳定性较高,对了元代码是我用vb编写的dll动态链接库,学习这个后你可以用vb编写类似api的函数库,当然升级dll就不用在重新引用组件那么麻烦了,不懂可以qq留言,qq:499932452 如果需要编写vb 动态链的可以从我要编译...

    动态链接库

    C++,vb.net编写和调用动态链接库

    动态链接库编程简单示例

    本示例详细列举了关于dll的各类使用,包括dll的动态链接和静态链接、dll的用def和不用def、dll全局变量、函数以及类封装,最后也为VB开发人员附上了dll的调用示例,还有就是我关于dll的心得,希望能为dll入门的人员...

    VB通过ActiveX的DLL与S7-12001500以太网通讯实例源码.zip

    组件采用动态链接库文件(*.DLL)的形式,在PC系统的项目工程里引用该组件,调用相应的属性与方法函数,即可快速实现PC与PLC的数据高效交换。 DLL通讯组件无须安装,直接复制到工程文件目录,方便打包安装部署;无须...

    将Matlab函数转换为VB可用的DLL

    链接库),亦可编译成独立的标准可执行文件,不需装载任何附加产品。本文就M文件到DLL的转换 以及在VB中调用这一类DLL两个问题做了一些探讨。文中,我们是基于Mat-lab5.0、VC5.0、VB5.0、 Matcom4.0或相应的更高版本的...

    pb调用dll实例

    例如:用户可能编写图象处理系统来浏览文件并将其存放于数据库,该应用需使用浏览器,但用PowerScript语言未提供做这类工作的函数,为了操纵设备,需要与设备本身环境通信,该环境一般是厂商提供的动态链接库。...

    固高GTS-VB运动控制卡编程手册1.4.rar

    (2) 将下载的动态链接库压缩包里VB6.0文件夹中的动态链接库和函数声明文件复制到工程文 件夹中; (3) 选择“工程”菜单下的“添加模块”菜单项; (4) 切换到“现存”标签页,选择函数声明文件,例如gts.bas,将其...

    VB通过ActiveX的DLL与S7-1200/1500以太网通讯

    组件采用动态链接库文件(*.DLL)的形式,在PC系统的项目工程里引用该组件,调用相应的属性与方法函数,即可快速实现PC与PLC的数据高效交换。 DLL通讯组件无须安装,直接复制到工程文件目录,方便打包安装部署;无须...

    三菱FX系列PLC通讯DLL

    三菱FX系列PLC通讯组件介绍,该组件为用户编写Widows下PC机与FX-PLC通讯的程序提供了接口,支持VB、VC开发环境。该组件包括了对PLC操作的所有指令,响应速度特别快,而且完全支持Win9x/2000/XP操作系统。

    dll编写教程PDF格式

    dll(动态链接库)编写教程,c++语言,mfc等,dll编写,注入,vb调用VC写的dll.

Global site tag (gtag.js) - Google Analytics