经典ASP将对象传递给VB6 COM dll方法 - 类型不匹配

时间:2011-07-20 14:33:22

标签: com asp-classic marshalling

这是我在我的时代遇到的更奇怪的问题之一,最好用经典ASP中的例子来解释许多问题:

Set thing = Server.CreateObject("ClassName") ' a C++ COM dll class
Set tool = Server.CreateObject("OtherClassName") ' a VB6 COM dll class

这不起作用

tool.Method thing

这确实有效

Set session("thing") = thing
tool.Method session("thing")

当它不起作用时我会遇到类型不匹配的问题,我非常困惑,并且不知道从哪里开始这么说实话。有人指点吗?

1 个答案:

答案 0 :(得分:2)

Classic VB可能期望tool.Method的参数是类型为VT_BYREF的变体,可能您的C ++ COM实例已作为VT_DISPATCH或VT_UNKNOWN传递,但是当您将它存储在会话中时它会转换为VT_BYREF