【问题标题】:VB.net load dynamic DLL created in VB.netVB.net 加载在 VB.net 中创建的动态 DLL
【发布时间】:2015-08-06 11:21:03
【问题描述】:

最初用 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

我关心的是如何从类Class1 加载和调用Increase

请忽略我的小错别字。

【问题讨论】:

标签: vb.net dll dynamic-loading


【解决方案1】:

如果您的 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,您会发现这是一个挑战 - 但反思是值得了解的。在开始深入研究动态加载之前,您应该熟悉反射并大致了解自己在做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-04
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2019-12-12
    • 2011-04-06
    相关资源
    最近更新 更多