【发布时间】:2013-08-25 07:17:20
【问题描述】:
我正在开发一个 C# 库,我需要从 COBOL(非托管)代码中调用它。因此,我将 COM 互操作用于这些目的。
我创建了一个调解通信的层“ModuleLanucher”。 我已经通过这些命令注册了这个 ModuleLanucher 库:
regasm ModuleLanucher.dll /codebase
TLBEXP Modulelanucher.dll
如果我在函数 foo 中有具体数量的参数,一切正常。 (如下所述)
不幸的是,我的函数 foo 需要可变数量的参数。 这是我的代码草图:
namespace NMSPC
{
class ModuleLanucher
{
void foo(string moduleName, params object[] args)
{
//call some dlls with args as parameteres
}
}
}
我从 COBOL 代码调用 COM 函数 foo:
VCCOMServer is class "$OLE$NMSPC.ModuleLanucher"
invoke VCCOMServer "new" returning anInstance
invoke anInstance "foo" using MODULENAME, PARAM01, PARAM02, PARAM03, PARAM04
当我尝试从此 COBOL 代码调用 foo 方法时,我收到此错误:
异常 65538 未被 oleexceptionmanager 类捕获。 说明:“OLE 参数计数不匹配” (8002000E): 参数个数无效
是否可以让 COM 对象函数具有可变数量的参数?
感谢您的任何建议
【问题讨论】:
标签: c# com-interop cobol