【问题标题】:ColdFusion COM errorColdFusion COM 错误
【发布时间】:2009-11-09 10:36:02
【问题描述】:

我正在从 CF4.5 升级到 CF8。以前在 4.5 版中工作的对 COM dll 的调用现在会引发“复杂对象类型无法转换为简单值..”错误。 COM 对象有一些定义为输出参数的数组。这些变量在 Coldfusion 中被定义为数组。关于 CF 发生了什么变化导致此问题以及我能做些什么来解决它的任何想法?

编辑:

这是 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

【问题讨论】:

  • 请显示引发错误的代码。

标签: com coldfusion


【解决方案1】:

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

更新

尝试改变

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

answer = ComObject.Test(1,Arg2);

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

【讨论】:

  • 感谢您的建议。我之前尝试过第一个。抛出的错误是:java.lang.ClassCastException:coldfusion.runtime.Array 无法转换为 java.lang.String。您的第二个建议引发错误:coldfusion.runtime.java.MethodSelectionException: The AddNumbers method was not found..可能是因为方法签名未被识别。我还在创建后转储了 comobject 变量,这就是结果(省略了一些行): AddNumbers([out,in]I2, [out,in]BSTR, [out, retval]BSTR) 注意第二个参数未被识别为数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多