我正在将使用@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
中没有做同样的事情。我想念什么?
答案 0 :(得分:0)
自从我第一次使用COM DLL和其他东西以来,这对我来说并不容易。感谢上面的评论,我能够做到。
最后为我工作的是下一个:
由于ThirdParty.DLL是COM DLL,因此我不得不使用regsvr32
命令对其进行注册。 请注意,我必须使用SysWOW64
内部的文件才能工作。显然,因为它是32位DLL文件。然后,该命令为:
regsvr32 "FullPath\ThirdParty"
成功运行此命令后,可以从Visual Studio中从名为ThirdParty的com对象添加引用,然后可以从该DLL创建类的实例。