English 中文(简体)
Wrong Object Return from COMable Wrapper
原标题:Wrong Object Returned from COM Callable Wrapper
  • 时间:2009-08-28 13:50:05
  •  标签:

我刚刚做了更新,以弥补在电点内从美国律师协会那里传来的重炮。 所有发展都是微薄的,但当我试图在另一个用户机器上部署时,我遇到一个问题,我不知道如何 de。

发生的情况是: 净物体在VBA中创建,回归的参照点是错误的物体,因此下行与未找到的方法不符。

Dim myObj As Foo.Bar

Public Sub RefreshData()

// instantiate object
Set myObj = New Foo.Bar   
// call a method
myObj.HelloWorld

最后一行没有遵守。 长期错误 438 物体不支持这种财产或方法,其原因是,我的Obj是某种类型的“Wrong.Type”而不是“Foo.Bar”。

“Wrong.Type”也在组装中,因此,我假定某类图书馆有误,但我尝试再造(使用再燃气/密码基/tlb MyLib.dll),而这一斜线帮助了。

我不知道如何进一步诊断。 希望有人可以列举一些步骤,说明如何诊断这种问题?

最佳回答

在该案中,删除提及tlb档案的内容,然后添加该档案,再次解决问题。

不幸的是,我从来没有找到一般性解决办法,也没有解释这种行为。

问题回答

可能出现自动生成的GUIDs(阶级、接口、类型图书馆)的问题——当你们改变了DLL时,GUIDs发生了变化。 由于旧的TLB使用旧的GUIDs,通过提及,你将这些旧的GUID与类型名称联系起来,因此该代码没有与新的GUID公司合作。 我碰到的大多数VB(6和NET)代码都存在这一问题,因此,如果你的DL是用VB书写的,那么它很可能是这样(你围绕这一理论所做的工作也支持这一理论)。

如果是问题,一般的解决办法是明确制定准则,如果你有多种类型的话,那就没有什么可笑的,因为你将准则改变为你的版本,你不得不人工做。





相关问题
热门标签