首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请教高人rundll32能启动用vb编写的dll吗

2012-12-17 
请问高人rundll32能启动用vb编写的dll吗?我用vb做了个dll,用测试exe测试都运行成功;可是用rundll32启动该d

请问高人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 格式函数。再试试。

热点排行