我正在尝试从旧的VB DLL调用一个方法并收到此错误:
未处理的类型异常 发生'System.Runtime.InteropServices.COMException' Microsoft.VisualBasic.dll其他信息:类型不匹配。 (HRESULT异常:0x80020005(DISP_E_TYPEMISMATCH))
这是一个使用VS Community 2015的VB项目。它成功加载了dll但不会执行方法。我有一个较旧版本的程序的源代码,它可以进行相同的调用并将其用作指南。包括使用该代码的示例可执行文件,即使我在64位Windows机器上,它仍然有效,并且肯定是很久以前在x86机器上写的。
这是旧代码: 在早期的子...中首先调用以下2行
Dim SFServ As Object
Set SFServ = CreateObject("TC2000Dev.cTC2000") 'initialize dll
Private Sub FillListNames()
Dim Names() As String
Dim ListTypes() As Long
'This call returns an array of ChartListNames and an array of their types
SFServ.GetAllChartLists Names(), ListTypes() 'then it does stuff with Names etc
End Sub
现在这是新代码。错误发生在SFServ.GetAllCharLists行
上Dim SFServ As Object
SFServ = CreateObject("TC2000Dev.cTC2000")
Private Sub FillListNames()
Dim Names() As String
Dim ListTypes() As Long
'This call returns an array of ChartListNames and an array of their types
SFServ.GetAllChartLists(Names, ListTypes)
End Sub
答案 0 :(得分:-1)
只是好奇,因为我正在访问TC2000 v7中的Access项目中的数据,但是您是否解决了这个问题?我想知道自从使用cTC2000以来是否需要指令Option Base 1。添加了cTC2005是为了与VBA的默认选项Option Base 0兼容。
可能我还建议您以以下方式早期绑定到ActiveX对象:
将SF用作TC2000Dev.cTC2000
因为这将提供自动线功能。
您的项目是什么?