vb调用dll

作者&投稿:笃砌 (若有异议请与网页底部的电邮联系)
如何让VB调用外部的DLL~

要声明一个DLL过程,首先需要在代码窗口的"通用(General)"部分增加一个Declare语句。如果该过程返回一个值,应将其声明为
Function:
   Declare Function publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]]...])] As Type
   如果过程没有返回值,可将其声明为Sub:
   Declare Sub publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]]...])]
  缺省情况下,在标准模块中声明的DLL过程,可以在应用程序的任何地方调用它。在其它类型的模块中定义的DLL过程则是模块私有的,必须在它们前面声明Private关键字,以示区分。下面分别介绍声明语句的各个组成部分。
  (一)、指定动态库:
  Declare语句中的Lib子句用来告诉Visual Basic如何找到包含过程的.dll文件。 如果引用的过程属于Windows核心库(User32、Kernel32或GDI32),则可以不包含文件扩展名,如:
   Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
   对于其它动态连接库,可以在Lib子句指定文件的路径:
   Declare Function lzCopy Lib "c:/windows/lzexpand.dll" _
   (ByVal S As Integer, ByVal D As Integer) As Long
如果未指定libname的路径,Visual Basic将按照下列顺序查找该文件:
  ①.exe文件所在的目录
  ②当前目录
  ③Windows系统目录
  ④Windows目录
  ⑤Path环境变量中的目录
  下表中列出了常用的操作系统环境库文件。
  动态链接库描述
  Advapi32.dll高级API服务,支持大量的API(其中包括许多安全与注册方面的调用)
  Comdlg32.dll通用对话框API库
  Gdi32.dll图形设备接口API库
  Kernel32.dllWindows32位核心的API支持
  Lz32.dll32位压缩例程
  Mpr.dll多接口路由器库
  Netapi32.dll32位网络API库
  Shell32.dll32位ShellAPI库
  User32.dll用户接口例程库
  Version.dll版本库
  Winmm.dllWindows多媒体库
  Winspool.drv后台打印接口,包含后台打印API调用。
  对于Windows的系统API函数,可以利用VB提供的工具API Viewer查找某一函数及其相 关数据结构和常数的声明,并复制到自己的程序中。

静态调用简单,动态调用麻烦;静态调用占用资源多,动态调用占用资源少。
静态调用就是常用的申明API,一个DLL库里有很多的函数可供调用,把要用的申明即可。比如:Public/Private Declare Function [函数名] Lib "DLL文件名" [Alias "别名"] (参数变量表) [As 返回值的数据类型]
示例:Private Declare Function Test Lib "dll.dll" (x As String) As String
当程序结束的时候系统回自动释放DLL调用。
动态调用使用LoadLibery(DLL名),系统会检查DLL是否调入内存。如果调入了,可直接调用DLL里的所有函数,没有就会把DLL加入目标进程的进程空间。通过函数GetProcAddress确定函数入口地址,然后调用,后一种方法VB里不常用的。

扩展资料
静态调用详解:
制作好DLL之后,首先用Declare声明语句在窗体级或模块级或全局模块的代码声明段进行声明,将动态链接库中的函数声明到VB中,供VB程序调用。
语法格式1:
Public/Private Declare Sub [函数名] Lib "DLL文件名" [Alias "别名"] (参数变量表)
语法格式2:
Public/Private Declare Function [函数名] Lib "DLL文件名" [Alias "别名"] (参数变量表) [As 返回值的数据类型]
在声明中首先用Declare关键字表示声明DLL中的函数。在C语言中有的函数类型为VOID,它表示不具有返回值,则必须用关键字Sub将其声明成过程。有的函数具有返回值,则必须用关键字Function将其声明成函数,并且在声明语句的最后要用AS关键字指明函数返回值的类型。
例如add.DLL在VB中就可以声明为:
Declare Function ADD Lib "c:\add.dll" (ByVal X AS Integer, ByVal Y AS Integer, ByVal filein as string) AS Integer
通过此声明语句将函数ADD声明到VB中,便可直接调用。

vb生成的dll 不是标准的 dll,不能这样引用:
private declare function shuangquzhengge lib "C:\math.dll"

在你的另一工程中, 点击“工程”菜单下的“引用”,勾选你的 dll

将 private declare function shuangquzhengge lib "C:\math.dll" 改为:
Dim Mydll As New My1
注意:My1 要换成你dll的类模块名

然后,在代码中这样引用:
d=Mydll.HSin(5)

VB6.0怎么调用带参数的DLL?
答:1、桌面上双击VB图标,打开Visual Basic。2、打开的VB窗口中,选择文件---新建工程选项。3、新建工程窗口中,选择ActiveX DLL选项。4、编辑窗口中,输入dll文件的代码,具体内容由个人决定。5、单击文件---保存工程,将dll工程保存。6、单击文件---生成dll,生成一个dll文件。7、单击工程---引用选项...

vb 如何调用 NET写的DLL?
答:4、使用.net的工具 Visual Studio .Net 2003 Command Prompt,输入以下命令 Regasm Demo.dll /tlb:Demo.tlb 把Demo.dll注册为一个com对象(这个com对象不等同于普通的用VB编写的Com对象),并导出类型库Demo.tlb 5、新建一个VB工程,添加对Demo.tlb和IDemo.tlb的引用 6、定...

VB如何调用dll函数
答:1.新建一个ActiveX Dll,工程名字为vbmytestdll,类模块名字为mytestdll 2.类模块内容只有一个函数,主要返回DLL的HELLO WORLD Public Function dlltest1() As String dlltest1 = "HELLO WORLD"End Function 3.保存,生成DLL,名字为 vbmytestdll.dll 4.新建一个EXE工程,在菜单: 工程---引用---浏览...

VB究竟怎样调用dll
答:一个DLL中的函数要想被VB调用,必须满足两个条件:一是调用方式为stdcall,另一个是必须是export的。要做到第一条,只须在函数声明前加上__stdcall关键字。如: short __stdcall sample(short nLen, short *buffer) 要做到第二条,需要在*.def文件中加上如下的几行: EXPORTS sample @1 这里的sam...

VB怎么调用易语言的dll
答:1,打开 贸DLL注入工具.exe 2,选择你要加载的DLL。3,选择你的VB程序。4,点击 注入到导入表 5,关掉 贸DLL注入工具.exe ,直接双击VB程序,自动加载DLL了。6,题外话:DLL与VB界面需要用到通信功能,但是VB和易语言通信是不是不通用?没关系,用写到文件或写配置项,这个易语言超级简单吧?...

vb如何实现调用c#.net写的一个dll,这个dll里面都是些类,不是函数,想用...
答:所以理论上来说应该不是com,而C#的程序集是不提供向前兼容的,所以用一个老的语言调用新的技术的组件是做不到的,不过也有一种可能性,不过很难实现,大体逻辑这样,首先通过vb调用一个native的组件,用C或者c++完成,在这个组件里面加载clr,在clr里面加载c#的程序集,实例化对象,执行调用 ...

VB调用DELPHI dll问题
答:1、VB的String类型在Delphi DLL中是没有直接对应的类型。2、你在VB的声明 Function myfunc (...) As String 其实和Delphi中的声明function myfunc(...):PChar 是不匹配的。3、与Delphi 函数 function myfunc(...):PChar 对应的VB声明应该是:Function myfunc (...) As Long,返回值是一...

VB如何调用dll函数
答:"dll.dll" (x As String) As String 当程序结束的时候系统回自动释放DLL调用。动态调用使用LoadLibery(DLL名),系统会检查DLL是否调入内存。如果调入了,可直接调用DLL里的所有函数,没有就会把DLL加入目标进程的进程空间。通过函数GetProcAddress确定函数入口地址,然后调用,后一种方法VB里不常用的。

怎样用VB.NET写和调用DLl窗体
答:一、带窗体的dll创建 1、先新建 类库(testdll),在项目中添加两个窗体form1(主窗体)、form2,为了与后面的调用区分分别命名为fm1,fm2;并在fm1窗体中添加一个按钮用来调用fm2如下图 2、在fm1窗体代码中先引用fm2, 按钮代码调用fm2.如图 3、生成dll,(class1.vb中不需要写任何代码)二、调用...

我用vb调用vc做的dll怎么不行?
答:你的VC dll代码不对 正确做法是这样的:1.打开VC6.0,新建一个Win32 Dynamic-Library类型的工程,名字任意,比如AddDLL 2.选择“An Empty DLL Project”,然后点击Finish 3.选择File-New,首先添加一个头文件,选择C/C++ Header File,File栏处输入AddDLL,确定,这样就添加了一个名为AddDLL.h的头...