最初用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
。
请忽略我的小错字。
答案 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感到满意,并且在你开始潜入动态加载之前,一般都要明白你在做什么。