入门问题:VB中如何使用DLL?

解决方案 »

  1.   

    不是所有的dll vb均可调用 只有基于__stdcall调用约定的dll vb才可以调用
    如果弹出"dll调用约定错误"说明该dll不是__stdcall调用约定,vb中不可使用
    上面的函数在vb中可声明为
    public declare function Send Lib "xxx.dll" (byval nReply as long ,byval nMsg as long,byval sID as string)as long 
    注意:vc中的int和long类型都相当于vb中的long,vc中的short相当于vb中的integer
    char*相当于vb中的string,不过string必须以byval的形式传递
      

  2.   

    Set fs = Send Lib (,,)
      

  3.   

    例如调用API函数中的MessageBox,先申明函数:Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long然后调用MessageBox函数
      

  4.   

    按菜单里的 工程-引用,再点击浏览把.DLL引用进来,就可以使用DLL文件的方法和属性了
      

  5.   

    总结一下上面各位的说法:
    如果是标准的dll如果系统dll文件(如shell32.dll一般都是)
    你需要以
    <Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long>
    这种方式调用
    如果是activexdll,vb只能编写这样的dll
    你可以这样调用
    <
    按菜单里的 工程-引用,再点击浏览把.DLL引用进来,就可以使用DLL文件的方法和属性了
    >
    然后 dim一个对象
    在set obj=new 对象
    然后就可以使用他的成员
      

  6.   

    感谢各位的回答,但现在用的是一个VC写的用于驱动设备的DLL,不知如何解决?
      

  7.   


      C语言与VB的数据类型对照
    c             vb
    LPSTR        String 
    NULL         String 
    Char         Byte 
    Int          Long(32位环境下) 
    句柄         Long 
    值传递: 
    当通过值传递一个参数时,将参数的值的拷贝传递给过程。如果在过程中改变了参数的值,它不会影响原始变量。 
    引用传递(VB缺省): 
    当通过引用传递一个参数时,将参数的地址传递给过程。如果在过程中改变了参数的值,原始变量的值也被修改。 
      

  8.   


    在C语言中字符串变量实际上是一个地址。所以在VB中即使声明一个字符串变量值传递,也会把地址传给DLL过程,即:源变量的值会随着DLL过程中的对应参数改变而改变。
    在C语言中空字符串用NULL,即0来表示。在VB中则不能把0作为传给一个String类型的参数,需要使用vbNullString常量来表示空字符串。
    例:
    hWnd=FindWindow(vbNullString,"Microsoft Word")
    FindWindow是系统DLL的一个过程。
      

  9.   

    还是用ocx好。或者用ocx2dll转换一下。
      

  10.   

    有劳各位大侠,
    DLL的接口声明是这样的:UINT Dll_Send(char *strsca,char *strnum, char *strtxt);
    我在VB中如下声明:
    Public Declare Function Dll_SMS_Send Lib "Mddll.dll" (ByVal strsca As String, ByVal strnum As String, ByVal strtxt As String) As Long 运行时出现“DLL调用约定错误”的提示。
      

  11.   

    对不起,VB中的声明是这样的:Public  Declare  Function  Dll_Send  Lib    "Mddll.dll"  (ByVal  strsca  As  String,  ByVal  strnum  As  String,  ByVal  strtxt  As  String)  As  Long