VB 编译和调用动态链接库dll

1.环境

VS2010
win7 sp1 x64

小插曲,第一次用VB的可以看看下面链接和C差不多。迫于工程需要,我也是第一次用。
主要用法。

  • 定义变量 Dim a as String // 定义一个名为 a 的 String 变量。 与java语言中String a ; 意思一样
  • 定义函数 function(有返回值) Sub(无返回值)
  • Sub 过程
    Sub 过程是包含在 Sub 语句和 End Sub 语句中的一系列 Visual Basic 语句。每次调用过程时都执行过程中的语句,从 Sub 语句后的第一个可执行语句开始,到遇到的第一个 End Sub、Exit Sub 或 Return 语句结束。
Private function funname(ByVal strTemp asstring,  )asinteger`
	dim tStr asstring  
	tStr=UCase(strTemp)  
	funname=tStr  'return value
End function


'一个示例程序
Module Module1

    Sub Main()
        Dim d As Integer
        d = test(99, 2)
        MsgBox("a+b =: " & Str(d), 0, "Script Message Box")
    End Sub

    Public Function test(ByVal a As Integer, ByVal b As Integer) 'diy
        Dim c As Integer
        c = a + b
        test = c
    End Function



End Module
Private Sub funname()

End Sub

VB基础教程

2.dll编译

  1. VS2010 新建工程 test -其他语言-VB-类库

在这里插入图片描述
需要注意的就是类名和函数名,随便写个函数如下图所示。
工程名为 test
类名为Class1 函数名为 dlltestmsg (String)

后面用的到。
直接编译生成得到dll文件

Public Class Class1
    Public Function dlltestmsg() As String
        dlltestmsg = "HELLO WORLD, ——公众号: 一匹大懒虫"
    End Function
End Class

3.dll调用

我只Console实现的,窗口程序一样。

3.1. 首先新建工程 usetestdll

双击 My Project – 点击引用 — 添加 ----找到编译生成的dll(test.dll)–确定。
在这里插入图片描述

3.2. 对象浏览器

各个教程可能会提到这个对象浏览器。VS2010也有这样的功能
点击 视图----对象浏览器 就可以了调出来
默认快捷键是 Ctrl+Alt+J
可以翻看下 引用的 test.dll
在这里插入图片描述

3.3. 调用

代码为

Module Module1

    Sub Main()
        '声明DLL
        Dim mytest As test.Class1

        mytest = New test.Class1

        Dim a As String
        a = mytest.dlltestmsg
        MsgBox(a, 0, "Script Message Box")
    End Sub

End Module

解释:

  1. 声明dll时,mytest可以为任意字符。
    格式为 Dim [名] As [命名空间].[类名]
    跟对象浏览器中的结构一样
  2. 然后新建实例 new test.Class1
  3. 然后可以进行调用function了

命名空间一般情况下和dll的名称是一样的,但是也不完全正确,总而言之,命名空间可以用对象浏览器查看,点开第二级,对应NameSpace
运行结果如下图所示

在这里插入图片描述

成功!

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VB调用动态链接库(DLL)有两种方式:静态调用和动态调用。静态调用是在编译时将DLL文件的函数导入到程序中,而动态调用是在程序运行时才将DLL文件的函数导入到程序中。 静态调用的优点是调用速度快,但缺点是程序体积大,因为所有调用DLL函数都被编译到程序中。而动态调用的优点是程序体积小,但缺点是调用的速度相对较慢。 以下是静态调用DLL的示例代码: ``` Declare Function MyFunction Lib "MyDll.dll" (ByVal a As Integer, ByVal b As Integer) As Integer Sub Main() Dim result As Integer result = MyFunction(3, 4) End Sub ``` 以上代码中,使用`Declare`语句声明了一个名为`MyFunction`的函数,它位于名为`MyDll.dll`的DLL文件中。在`Main`子过程中,调用了`MyFunction`函数,并将结果存储在`result`变量中。 以下是动态调用DLL的示例代码: ``` Private Declare Function MyFunction Lib "MyDll.dll" (ByVal a As Integer, ByVal b As Integer) As Integer Sub Main() Dim result As Integer Dim hLib As Long hLib = LoadLibrary("MyDll.dll") If hLib <> 0 Then MyFunction = GetProcAddress(hLib, "MyFunction") result = MyFunction(3, 4) FreeLibrary hLib End If End Sub ``` 以上代码中,使用`Declare`语句声明了一个名为`MyFunction`的函数,它位于名为`MyDll.dll`的DLL文件中。在`Main`子过程中,先使用`LoadLibrary`函数加载了DLL文件,然后使用`GetProcAddress`函数获取了`MyFunction`函数的地址,最后调用了`MyFunction`函数,并将结果存储在`result`变量中。最后使用`FreeLibrary`函数释放了DLL文件的句柄。 需要注意的是,以上示例代码仅供参考,具体实现时需要根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoomCon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值