VB如何调用dll函数

假如我有个DLL,名为 asdfg.dll
它里面有一个函数 zxc(参数1,参数2)
我要用这个函数,该怎么写?
请高手帮我写出脚本,有时间的话请再加上注释
谢谢!!

静态调用简单,动态调用麻烦;静态调用占用资源多,动态调用占用资源少。

静态调用就是常用的申明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中,便可直接调用。































温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-06
1.在工程-引用中将asdfg.dll引用过来
2.dim AAA as asdfg 'asdfg是类模块的名称
Private Sub Form_Load()
dim x
Set AAA = New asdfg
x = AAA.zxc(参数1,参数2)'参数1,2自己写
End Sub

建议你了解一下下面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工程,在菜单: 工程---引用---浏览里找到vbmytestdll.dll,把它引用进来

5.EXE工程代码如下:

Option Explicit
Dim testdll As mytestdll'类模块名字

Private Sub Form_Load()
Set testdll = New mytestdll 'DLL的一个新实例
Me.Caption = testdll.dlltest1 '我的标题=返回DLL的HELLO WORLD
End Sub

OK,编译成EXE即可看到效果.本回答被提问者采纳
第2个回答  推荐于2017-09-01
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工程,在菜单: 工程---引用---浏览里找到vbmytestdll.dll,把它引用进来

5.EXE工程代码如下:

Option Explicit
Dim testdll As mytestdll'类模块名字

Private Sub Form_Load()
Set testdll = New mytestdll 'DLL的一个新实例
Me.Caption = testdll.dlltest1 '我的标题=返回DLL的HELLO WORLD
End Sub
第3个回答  2008-01-11
1、右击工程》添加引用 把你的dll文件添加进去
2、然后你定义一个变量作为dll中函数类型的,将变量实例化,最后在调用方法
第4个回答  2008-01-12

如何用VB调用dll中的函数
(一).静态调用其步骤如下:1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目 录下;4.打开你的目标工程选中工程,...

vb中如何调用dll?麻烦举个例子吧~~
如果dll文件是你自己写的,在你的程序里直接用就行拉 如:dim xx as new [自己写的类名]剩下的使用 xx 调用就可以看到你的程序里写的函数了

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

vb dll引用
DLL 一种是active dll 直接如图所示在 引用 菜单里选择你想要的DLL,然后代码窗口里dim 变量 as 类型 然后使用,另一种是标准DLL 就直接和声明API函数一样 Private Declare PtrSafe Sub File Lib "QMPlugin.dll" Alias "CopyFile" (ByVal aa As String, ByVal bb As String)...

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

vb6.0 怎么调用 dll文件 最好给个例子
工程->引用->浏览里找到那个dll 定义:dim testdll as 类模块名 实例化:set testdll=new 类模块名 使用方法就是: testdll.过程(函数)你想要怎么样的例子?

VB如何调用dll
在调用自己写的dll之前,想来看看VB是如何调用API的:Option ExplicitPrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" _(ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Sub Command1_Click() Dim Hwnd As Long Hwnd = FindWindow(vbNull...

VB如何调用.DLL文件里的函数?最好有具体的例子
DLL需要注册,放到哪里不重要,主要是注册 在运行那里,输入:regsvr32 <文件名> 这样你就可以直接使用了,不知道我说的是不是正确。

VB怎么调用DLL文件 这个DLL文件是自己用VB写的放在主程序一个文件夹里面...
case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;} return TRUE;} \/\/我的函数 int __stdcall Encrypt ( int p, int k ){ int c = p + k ;return c ;} Cipher.def:LIBRARY Cipher EXPORTS Encrypt 编译后,将Cipher.dll复制到“D:\\WINNT\\System32”目录。在VB中调用:Option ...

如何让VB调用外部的DLL?
要声明一个DLL过程,首先需要在代码窗口的"通用(General)"部分增加一个Declare语句。如果该过程返回一个值,应将其声明为\\x0d\\x0aFunction:\\x0d\\x0aDeclareFunctionpublicnameLib"libname"[Alias"alias"][([[ByVal]variable[Astype][,[ByVal]variable[Astype]]...])]AsType\\x0d\\x0a如果...

相似回答