2
as/400 ILEを使用すると、異なる言語のプロシージャーをモジュールにコンパイルし、結合して1つのプログラムにすることができます。私はエントリモジュールである私のCLモジュールから呼び出されているC関数を含むモジュールでこれを達成しようとしています。as/400:CLからのCプロシージャー
Cモジュール源: MYLIB/MYFILE/csource
int getValue(void){
return 20;
}
CLモジュール源:MYLIB/MYFILE/clsource
pgm
dcl var(&NUM) type(*INT)
callprc prc(getValue) rtnval(&NUM) /* <== Calling C function. */
endpgm
それから自分のモジュール内に各ファイルをコンパイル。
crtcmod module(cmodule) srcfile(myfile) srcmbr(csource)
crtclmod module(clmodule) srcfile(myfile) srcmbr(clsource)
これらの2つのコンパイルは問題ありません。 ILEバインダーは、これらの2つのモジュールからプログラムを作成しようとすると、CLソースのgetValue関数が未定義であり、プログラムの作成に失敗するという不満があります。
crtpgm pgm(mypgm) module(clmodule cmodule) entmod(clmodule) detail(*basic)
CRTPGMは私に与えることをエラー:
Unresolved references........................: 1
Symbol Type Library Object Linked Name
*MODULE mylib clmodule *YES getValue
を私は何をしないのですか?