2009-11-09 69 views
0

我正在从CF4.5升级到CF8。调用COM 4.0 dll的版本现在在4.5版本中工作,现在会抛出一个“复杂对象类型无法转换为简单值..”的错误。 COM对象有几个数组定义为输出参数。这些变量被定义为Coldfusion中的数组。有什么想法可以改变CF导致这个问题,我能做些什么来解决它?ColdFusion COM错误

编辑:

这是CF代码:

Arg2 = ArrayNew(1); 
answer = ComObject.Test(1,"Arg2");  <------This line throws the error 

的VB的ActiveX DLL的代码:

Public Function AddNumbers(number1 As Integer, ByRef Arg2() As String) As String 
    AddNumbers = "hello" 
End Function 
+0

请表明引发错误的代码。 – Tomalak 2009-11-09 13:22:37

回答

0

我怀疑某处阵列被视为一个数或字符串。没有代码示例,将很难提供任何更多的帮助。您可能想要在访问数组中的位置时检查索引的处理方式。

UPDATE

尝试改变

answer = ComObject.Test(1,"Arg2"); 

answer = ComObject.Test(1,Arg2); 

OR

answer = ComObject.Test(1,arrayToList(Arg2)); 
+0

感谢您的建议。我曾尝试过第一个。抛出的错误是:java.lang.ClassCastException:coldfusion.runtime.Array不能转换为java.lang.String。您的第二个建议会抛出错误: coldfusion.runtime.java.MethodSelectionException:未找到AddNumbers方法.. 可能是因为方法签名未被识别。我也在创建comobject变量后立即抛出了comobject变量,这是结果(省略了一些行): AddNumbers([out,in] I2,[out,in] BSTR,[out,retval] BSTR) 注意到第二个参数不被识别为数组。 – yuben 2009-11-11 05:59:26