VB无所不能之五:建立“标准”DLL动态链接库文件(2)

简介:
VB无所不能之五:建立“标准”DLL动态链接库文件(2)
 
——作者:钟声
 
        昨天我们讲到,如何通过特殊方法获取OBJ文件,那么今天我们继续讲如何进行编译连接。
 
       一、首先我们看看这种特殊方法的操作准备步骤:
 
        步骤一:建立一个假的“Link.exe”;
       建立一个新的项目,在那个项目中建立一个“Form”,然后,在“Form”中加入如下代码:
 
Sub Form_Load() 
        MsgBox  "现在可以拷贝OBJ文件了!!"
         End 
End  Sub
 
       编译为:Link.exe
 
        步骤二:将“C:\Program Files\Microsoft Visual Studio\VB98\Link.exe”改名为“Link2.exe”;
 
        步骤三:将假的那个Link.exe复制到“C:\Program Files\Microsoft Visual Studio\VB98\”中;
 
       二 、建立一个ActiveX DLL
 
        步骤一:建立一个新项目,选择“ActiveX DLL”,然后建立一个“Module”在代码中加入如下代码:
 
Function fun1(ByVal a  As Long, ByVal b  As Long)  As Long 
        fun1 = a + b 
End  Function 

Function fun2()  As Long 
        fun2 = 1 
End  Function
      
         步骤二:建立一个空的“Class” ;
 
         步骤三:用VB菜单编译;
 
         步骤四:复制出OBJ文件;
        当编译的时候会弹出一个对话框:
 
        
 
         步骤五:迅速将这个文件夹中新出现的三个文件复制出来;
        三个文件分别为:Class1.OBJ,Module1.OBJ,Project1.OBJ
        将这三个文件复制到:“c:\abc”这个文件夹。
 
        三、进行编译连接工作
 
         步骤一:建立一个Bat文件,内容如下:
 
cd c:\Program Files\Microsoft Visual Studio\VB98 
link2.exe  "c:\abc\Class1.obj"  "c:\abc\Module1.obj"  "c:\abc\Project1.obj"  "d:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:__vbaS /EXPORT:mm /EXPORT:mathadd /EXPORT:rit /OUT: "c:\abc\ProjectOK.dll" /BASE:0x11000000 /SUBSYSTEM:WINDOWS,4.0 /VERS

         步骤二:将这个bat文件复制到“C:\abc”
 
         步骤三:在c:\abc中执行bat文件,生成DLL文件在文件夹中
 
         四、好了,现在我们测试一下
 
        建立一个新的项目,再建立一个“Form”,加入两个按钮,在“Form”中粘贴如下代码:
 
Declare  Function fun1 Lib "ProjectOK.dll" (ByVal a  As Long, ByVal b  As Long)  As Long 
Declare  Function fun2 Lib "ProjectOK.dll" ()  As Long 

Sub Command1_Click()
     MsgBox fun1(100, 200) 
End  Sub 

Sub Command2_Click()
     MsgBox fun2() 
End  Sub 
 
         然后,测试一下,呵呵,成功!
 
 





 本文转自 useway 51CTO博客,原文链接:http://blog.51cto.com/useway/295700,如需转载请自行联系原作者

相关文章
|
2月前
|
C#
Delphi可不可以制作出像c#那样的dll类库?
在Delphi中,创建DLL项目(如dll.dpr)并定义一个类TMyCls后,在另一个项目(如test.dpr)中可以引入此DLL并直接实例化和调用类的方法。然而,Delphi目前主要支持两种DLL形式:动态链接库(需显式声明exports,仅支持函数调用)和ActiveX DLL(需定义IDL接口)。这两种方式都较为繁琐。相比之下,C# 的DLL类库更为便捷,编写并编译后即可在其他项目中直接使用。
|
7月前
|
JavaScript C# Windows
【傻瓜级JS-DLL-WINCC-PLC交互】4.DLL读取WINCC内部变量
【傻瓜级JS-DLL-WINCC-PLC交互】4.DLL读取WINCC内部变量
220 0
|
存储 编译器 C++
《C++避坑神器·十五》动态库只有dll文件,没有.lib文件时动态调用dll的中类和成员函数
《C++避坑神器·十五》动态库只有dll文件,没有.lib文件时动态调用dll的中类和成员函数
414 0
|
存储 自然语言处理 编译器
编码拓展:Windows链接库
编码拓展:Windows链接库
113 0
|
NoSQL 编译器 vr&ar
嵌入式(十二)——库文件及静态库与动态库的制作与使用(附练习)
嵌入式(十二)——库文件及静态库与动态库的制作与使用(附练习)
230 0
嵌入式(十二)——库文件及静态库与动态库的制作与使用(附练习)
C++ 编写DLL文件给易语言调用
  摸索了两天了,终于解决了所有问题,在此跟大家分享。   需要三个文件,dll_demo.h、dll_demo.cpp、dll_dome.def   直接上代码:   头文件如下: 1 #ifndef _DLL_DEMO_H_ 2 #define _DLL_DEMO_H_ 3 #ifdef DL...
2180 0
|
API C# C++
C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件
原文:C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件       这两天忙着把框架改为支持加载C++和Delphi的插件,来不及更新blog了。      原来的写的框架只支持c#插件,这个好做,直接用c#的反射功能便可。
1117 0