COBOL (アンマネージ) コードから呼び出す必要がある C# ライブラリを開発しています。したがって、これらの目的で 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 メソッドを呼び出そうとすると、次のエラーが発生します。
クラス oleexceptionmanager によってトラップされない例外 65538。説明: 「OLE パラメーター数の不一致」(8002000E): パラメーターの数が無効です
可変数の引数を持つ COM オブジェクト関数を使用することは可能ですか?
ご提案ありがとうございます