如何从DLL创建类的新实例?

时间:2018-06-27 13:42:07

标签: vb.net dllimport

我正在将使用@GWTignore nodeModel.newInstance(); <--- will be ignored @GWTcorrect ClassReflection.newInstance(nodeModel); <--- will be accepted 编码的旧应用程序转换为VB6

在旧的应用程序中,我正在使用第三方VB.NET文件。我们称之为DLL

我对ThirdParty.dll的用法之一类似于ThirdParty.DLL中的用法:

VB6

在旧的应用程序中,这将返回结果Dim MyApi as new x.y 'referenced from the ThirdParty.dll Dim vReturnCode as Long vReturnCode = MyAPI.InitialiserCles(a, b, c, d, e) 'consider a,b,c,d,e variables declared and initiaited.

现在,我需要在新的Long应用程序中使用相同的ThirdParty.dll

我创建的是这样:

VB.NET

现在,当我想使用它时,我是这样做的:

Public Class ThirdPartyAPI
    Private Declare Function InitialiserCles Lib "ThirdPartyFolder\ThirdParty" (a As String, b As String, c As String, d As String, ByRef e As String) As Long

    Public Function InitializeKey(a As String, b As String, c As String, d As String, ByRef e As String) As Long
        Return InitialiserCles(a, b, c, d, e)

    End Function
End Class

我收到以下错误:

  

在DLL ThirdPartyFolder \ ThirdParty中找不到DLL入口点'InitialiserCles'

我猜想是因为我们实际上是从那个DLL创建一个Dim MyApi as new ThirdPartyAPI Dim result as MyApi.InitialiserCles(a,b,c,d,e) 'consider again variables are well declared/initiated. 的新实例,然后调用函数x.y(在旧的应用程序(VB6)中)。我在InitialiserCles中没有做同样的事情。我想念什么?

1 个答案:

答案 0 :(得分:0)

自从我第一次使用COM DLL和其他东西以来,这对我来说并不容易。感谢上面的评论,我能够做到。

最后为我工作的是下一个:

由于ThirdParty.DLL是COM DLL,因此我不得不使用regsvr32命令对其进行注册。 请注意,我必须使用SysWOW64内部的文件才能工作。显然,因为它是32位DLL文件。然后,该命令为:

regsvr32 "FullPath\ThirdParty"

成功运行此命令后,可以从Visual Studio中从名为ThirdParty的com对象添加引用,然后可以从该DLL创建类的实例。