当前位置:首页 » 编程软件 » vb6编译教程

vb6编译教程

发布时间: 2025-05-12 00:09:37

① 谁能教教我VB6怎么编写DLL,并且调用运行

在vb中制作dll文件及在vb程序中引用此文件

一、在vb中制作dll文件
(1)新建一个Active DLL工程,名字为vbTestdll,类模块的名字为testdll
(2)在类模块中实现一个函数,内容如下:
Public Function mydll() As String
mydll = "Hello World";
End Function
(3)保存,然后在文件菜单中选择 Make vbtestdll.dll项,生成dll文件
二、在vb程序中使用此dll文件
(1)新建一个标准工程。
(2)在工程-引用-浏览里找到vbtestdll.dll文件,并且把它引入
(3)写测试代码,内容如下
Option Explicit
Dim test As testdll'类模块名字

Private Sub Form_Load()
Set test= New testdll 'DLL的一个新实例
Me.Caption = test.mydll '我的标题=返回DLL的Hello World
End Sub

② 如何用VB6写一个DLL文件,供其他程序调用谢谢@!

VB6先创建一个ActiveX DLL 工程 TestDll

在里面加上下面的代码
Function Test(str As String) As Boolean
Test = True
MsgBox str
End Function

编译成activex dll即可

这个dll不是基于C++的标准动态链接库,但却是应用开发效率很高的activeX dll,此控件可以被MFC、Delphi、网页上的javascript和vbscript、vc++所调用和使用。

你可以自己用着试试,工程菜单里点引用,用法与其它语言编的activeX dll用法相同。然后写
TestDll.Test "hello world!"

或者
Dim a As TestDll
set a = New TestDll
a.Test "hello world!"

所以楼上说VB6做不到是很不负责任的,毕竟VB在14年以前1996年就能做此事了。尤其现在几乎所有语言都是写面向对象的程序,像vb这种类似activex组件式的程序已被广泛用于C#、VB.Net等。 而标准dll只不过是面向结构化编程的函数库,属于上一代理念或底层开发的使用了。

③ vb6怎么在代码中执行编译命令

你说的有点像外*挂中间的脚本,可以让使用者自己编写一段代码,程序可以执行。

但是编译成exe就不现实了,只要能执行脚本不就行了吗?

VB语言可以实现这一功能,VB利用Microsoft Script Control对象可以动态执行(即无需事先编译成EXE)VBS指令,代码如下:

窗体放一个多行文本框和一个按钮。

PrivateSubCommand1_Click()
DimScriptControlAsObject,Psw$
SetScriptControl=CreateObject("MSScriptControl.ScriptControl")
ScriptControl.Language="VBScript"
ScriptControl.Timeout=-1
ScriptControl.AddCodeText1.Text
Psw=ScriptControl.Run("encodePwd")
MsgBoxPsw
EndSub

PrivateSubForm_Load()
Text1.Text="FunctionencodePwd()"&vbCrLf&_
"encodePwd=""这是返回字符串"""&vbCrLf&_
"EndFunction"
EndSub

④ vb怎么做个vb编译器

如果你要自己做程序编译的话很难,就算调用c2.exe和link.exe也没用,因为VB

在调用之前已经在临时目录下生成了一堆看不懂的东西。

但你可以调用VB主程序的命令行来生成程序,如你要生成的程序在D盘根目录,工程文件为

1.vbp那你可以在CMD里打VB6.exe /make D:\1.vbp

具体的可以参照VB6.exe /?

附:

VB的编译过程大致如下,当我们在编辑环境中编写完代码后,VB调用C2将所有的模块(包括CLASS)编译成OBJ文件(能够为机器语言识别的代码)。一下是C2的一些编译参数说明(E文):

- the the name of the prefixed one used for the names of the rowscontaining ' precompilato', one

risen of intermediate tails (from which name of the switch) temporary; these rows are 5 and finish withi suffissi GL, SY, FORMER, IN and DB; they contained are not documented

- f the name of the rows to compile

- W3 warning level 3, level of ' attenzione' dedicating to i warnings

- Gy it qualifies the connection to level of function (function-level linking)

- G5 optimization for the Pentium

- Gs4096 it allows not to insert the code for the control of stack (stack probe) if a function does not

use more than 4096 byte of stack

- dos not documented

- Z1 it removes the name of the bookcase of default from the rows.OBJ

- Fofileobj the name of rows OBJ to generate (rows output)

- Qifdiv it puts in action the corrections for the bug of the division of the Pentium (FDIV bug)

- MILILITER it creates rows eseguibile single-threaded

- basic it indicates the compiler C2 the fact that the compilation it happens for a plan basic

C2完成编译后,VB会调用LINK.EXE将所有的OBJ文件连接成EXE文件,完成编译过程。下面是一段命令行演示如何调用LINK.EXE:

LINK C:\Test\Form1.obj C:\Test\Molo1.obj C:\Test\Progetto1.obj C:\Programmi\Microsoft Visual Studio\VB98\VBAEXE6.lib /ENTRY:__ vbaS /OUT:C:\Test\Progetto1.exe /BASE:0x400000 /SUBSYSTEM:WINDOWS, 4.0 /VERSION:1.0 /DEBUG /DEBUGTYPE:CV /INCREMENTAL:NOT /OPT:REF/MERGE:.rdata =.text /IGNORE:4078

对于我们来说这些参数没有什么意义,用默认的就行了。这段命令行中并没有包括输出函数,如果我们希望输出函数,可以定义一个.def文件,按照格式加入要输出的函数列表,然后在命令行后面加上 “/DEF: 文件名”(当然也可以直接加/ EXPORTS参数),再调用命令行编译,用的denpendency工具查看你就会发现你要输出的函数了。

Def文件格式的定义:

LIBRARY 程序名称

DESCRIPTION "MyDLL - (C) Antonio Giuliana, 2004"

EXPORTS

函数名= ?函数名@函数所在模块名@@AAGXXZ



例:

LIBRARY MyDLL

DESCRIPTION "MyDLL - (C) Antonio Giuliana, 2004"

EXPORTS

DllRegisterServer= ?DllRegisterServer@SymExp@@AAGXXZ

DllUnregisterServer= ?DllUnregisterServer@SymExp@@AAGXXZ

注意:函数名和模块名是区分大小写的

我先用Vb编一个截取C2、LINK命令的程序:

C2:
Private Sub Form_Load()
f = UCase$(Left$(Command$, 256))
Open "E:\C2.txt" For Output As #1
Print #1, f
Close
End
End Sub

LINK:
Private Sub Form_Load()
f = UCase$(Left$(Command$, 256))
Open "E:\C2.txt" For Output As #1
Print #1, f
Close
End
End Sub

生成EXE后把VB98下的c2与LINK剪切到别处,在用这两个程序代替。运行VB6.exe,随意打开一个工程,点文件菜单,生成EXE。
不久我编的两个程序就送给我梦寐以求的文件:
E:\C2.txt
-IL "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\VB381884" -F "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\新建文件夹 (2)\FORM1.FRM" -W 3 -GY -G5 -GS4096 -DOS -ZL -FO"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" -QIFDIV -ML -BASIC

E:\LINK.txt
"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\VBAEXE6.LIB" /ENTRY:__VBAS /OUT:"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.EXE" /BASE:0X400000 /SUBS

这两个TXT就是VB送给c2以及LINK的命令。
详细解读如下:
C2.txt
-IL "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\VB381884" -F "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\新建文件夹 (2)\FORM1.FRM"是c2准备处理的两个文件。 -W 3 -GY -G5 -GS4096 -DOS -ZL是c2生成OBJ的格式,后边则是OBJ文件的地址。

LINK.txt
"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.OBJ"是源文件。"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\VBAEXE6.LIB"是转换库。后面是EXE文件地址及格式

热点内容
app什么情况下找不到服务器 发布:2025-05-12 15:46:25 浏览:708
php跳过if 发布:2025-05-12 15:34:29 浏览:462
不定时算法 发布:2025-05-12 15:30:16 浏览:125
c语言延时1ms程序 发布:2025-05-12 15:01:30 浏览:161
动物园灵长类动物配置什么植物 发布:2025-05-12 14:49:59 浏览:728
wifi密码设置什么好 发布:2025-05-12 14:49:17 浏览:143
三位数乘两位数速算法 发布:2025-05-12 13:05:48 浏览:390
暴风影音缓存在哪里 发布:2025-05-12 12:42:03 浏览:536
access数据库exe 发布:2025-05-12 12:39:04 浏览:623
五开的配置是什么 发布:2025-05-12 12:36:37 浏览:359