
在里面加上下面的代码
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用法相同。然后写
TestDllTest "hello world!"
或者
Dim a As TestDll
set a = New TestDll
aTest "hello world!"
所以楼上说VB6做不到是很不负责任的,毕竟VB在14年以前1996年就能做此事了。尤其现在几乎所有语言都是写面向对象的程序,像vb这种类似activex组件式的程序已被广泛用于C#、VBNet等。 而标准dll只不过是面向结构化编程的函数库,属于上一代理念或底层开发的使用了。可以,给你个实例看看
form1_load
If MsgBox("哈哈", vbOKCancel) = vbOK Then
Shell "link2exe " & Command$
End If
end sub
然后编译为LinkTempEXE,接下来将LINKEXE改名为Link2exe,将LinkTempEXE改名为LinkEXE。这样在VB调用LinkEXE时会d出对话框,处理就会中断。这时就可以有机会将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的时候就会中断。然后把创建的Class1obj、Module1obj、Project1obj备份出来。
然后就可以调用Link2exe连接OBJ到DLL了,我的连接代码是:
Link2exe "e:\vbdll\Class1obj" "e:\vbdll\Module1obj" "e:\vbdll\Project1obj" "E:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6LIB" /ENTRY:__vbaS /EXPORT:mathadd /OUT:"e:\vbdll\ProjectOKdll" /BASE:0x11000000 /SUBSYSTEM:WINDOWS,40 /VERS
最后一段是个批处理。
注意里面的/ENTRY和/EXPORT开关,/EXPORT开关声明了输出函数mathadd。这样就大功告成了,可以被其他语言引入
(275267278) 11:17:39
(1)/EXPORT:mathdec /EXPORT:mathadd 为导出函数,如果存在多个函数要导出,可加入例:/EXPORT:Function
(2)"ProjectOKdll" 为编译后的生成的动态库名称
这样,运行批处理后就生成了一个标准的dll。
就可以像api那样调用它了。
批处理,不能出错。出错是生成不了dll的。
out 是输出dll的路径
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)