VB.net加载在VB.net中创建的动态DLL

时间:2015-08-06 11:21:04

标签: vb.net dll dynamic-loading

最初用VC ++编写但在VB中调用的DLL的简单动态加载如下:

Public Declare Sub Increase Lib "mylib.dll" (ByRef a As Double)

如果DLL代码也是用VB编写的,该怎么办?然后如何加载它?让我们假设DLL代码是:

Public Class Class1
    Public Sub Increase(ByRef a As double)
        a=a+1
        MsgBox("new value ="+a)
    End Sub
End Class

我关注的是如何从课程Increase加载并致电Class1

请忽略我的小错字。

1 个答案:

答案 0 :(得分:0)

如果您的DLL是从.NET代码(VB.NET或C#)编译的,那么您有两个选择:

1)在Visual Studio中添加对DLL的引用。这为您提供了智能感知自动完成功能和IDE提供的其他帮助。除非你有充分的理由否则我会建议这样做。

为此,首先在类库项目中编译Class1,然后在Visual Studio中创建要使用DLL的新项目。在Visual Studio中,右键单击项目图标,单击“添加引用”,然后选择“浏览”。找到您的DLL,然后将其添加到您的项目中。完成此操作后,您将能够使用您的类和函数。它将以ProjectName.Class1.Increase()。

的形式提供

2)使用反射在运行时动态加载DLL。这有几个缺点,例如无法使用智能感知,但如果您计划在自己的DLL中制作插件或嵌入了DLL,则它很有用。为此,您需要遵循@HansPassant的建议并查看他给您的链接,特别是此声明:

  

使用Assembly定义和加载程序集,加载程序集清单中列出的模块,并从此程序集中找到一个类型并创建它的实例。

Reflection中的Assembly类允许我们动态加载,编译和运行几乎所有.NET程序集。如果你刚刚开始使用VB,你会发现这是一个挑战 - 但反思值得了解。你应该对Reflection感到满意,并且在你开始潜入动态加载之前,一般都要明白你在做什么。