请问高人rundll32能启动用vb编写的dll吗?
我用vb做了个dll,用测试exe测试都运行成功;可是用rundll32启动该dll总是报“a.dll出错,丢失条目:dll_start”的错;
说明下,这里我的dll名为a.dll,dll类里提供的对外接口函数为dll_start,
rundll32的格式为:
rundll32.exe a.dll,dll_start
请vb的牛人帮忙解释下为什么这样;还有,我如果想启动该dll的话,需要怎么做?
不胜感激
[最优解释]
Win32 Native DLL就是那种有一个入口地址和导出表构成的可执行文件,直接能通过LoadLibrary()访问的。
COM DLL其实也是一个特殊的 Win32 dll,但是用户的函数并不出现在导出表里面,需要经过一系列初始化后才能访问。COM是面向对象的。
[其他解释]
不可以。
VB不支持Win32 Native DLL。
[其他解释]
感谢您的快速回帖!那vb写的dll只能被vb调用吗?不能够实现被系统调用吗?如果我想被系统调用,该怎么做呢?
唉,有点儿急,不知道说明白了没
[其他解释]
使用Delphi、VC++编写DLL,在这些DLL里面再调用VB的DLL。
rundll32 前一个dll。
VB写的dll是ActiveX COM DLL。
另外也可以使用PowerBasic这些语言创建Win32 DLL,但是这些语言只是使用Basic语法的另一种语言,无法直接将VB程序转换过去。
[其他解释]
喔 酱紫 好的,我试试 非常感谢!
[其他解释]
对了,还想请教,我想弄明白到底什么是activex com dll,什么是Win32 Native DLL,两者本质到底有什么区别,我该看一些什么方面的书,你能给点建议吗?谢谢!
[其他解释]
如果你就是为了写一个小程序,直接在网上找如何用Delphi或者VC调用COM DLL的文章即可。
[其他解释]
caozhy,听你说的我明白多了;我把原DLL改成了EXE,直接运行正常;可我把它做成服务,却启动不了,不知为啥;难道,VB写的EXE也不能直接作为服务启动吗?还是为嘛?服务的类我是直接用的wszjljx牛人的那个服务类作的,安装正常,启动却不行,我手动启动了也不成;
wszjljx牛人的类地址:http://www.m5home.com/bbs/thread-3227-1-1.html
我的做成服务的程序代码:
Public Sub main()
Dim cmdStr As String, StrArray
Dim dotPot As Integer
Dim ExeNameStr As String, ParaStr As String
MsgBox Command
cmdStr = Trim$(Command)
dotPot = InStr(cmdStr, ",")
If dotPot <= 0 Or InStr(cmdStr, "/") <= 0 Then Exit Sub '没有参数退出
ExeNameStr = Trim$(Left$(cmdStr, dotPot - 1))
ParaStr = LCase(Trim$(Mid$(cmdStr, dotPot + 1)))
If InStr(ExeNameStr, "") <= 0 Then Exit Sub '不是全路径,退出
Dim Service_Value As New Service_Class
With Service_Value
.Name = "Html Utility"
.Account = "LocalSystem"
.Description = "Html Utility"
.DisplayName = "Html Utility"
.Command = ExeNameStr
.Interact = SERVICE_INTERACT_WITH_DESKTOP
.StartType = SERVICE_AUTO_START
End With
Select Case ParaStr
Case "/i"
'安装服务
Service_Value.SetupNTService
Case "/start"
'开始服务
Service_Value.StartNTService
Case "/stop"
'停止服务
Service_Value.StopNTService
Case "/u"
'卸载服务
Service_Value.DeleteNTService
Case "/c"
'检测服务是否安装
Service_Value.GetServiceConfig
Case "/s"
'当前服务状态
Service_Value.GetServiceStatus
End Select
END SUB
为嘛呢?为嘛不行呢?郁闷!
[其他解释]
我用notepad.exe测了,也是启动不了;看来不是我的exe的问题,是服务类的问题;
caozhy,是不是我的这个类用错了?还是咋米回事?
[其他解释]
mk........
[其他解释]
你使用VB将 DLL 写成可输出函数的Dll,形式同 API 格式函数。再试试。