・コンパイラに、ディレクトリ$PROROOT/cの中のライブラリ−ファイルとcpred.hを指定しましたか?
・機種によってCコンパイラは異なります。オプションの省略形も違ってきます。
・新しく定義した述語を使って、"undefined_predicateが出たら、Cboot関数の中に何か誤りがあります。Cの関数とCPRIM/CPREDの引数に同じ名前を使っていないかチェックして下さい。特に大文字と小文字をチェックして下さい。
・新しい述語を含んだファイルには、Cboot関数は1つだけですか?
・もし複数の述語を使っているならば、Cboot関数の中に、その述語それぞれに対してCPRIMまたはCPREDがありますか?
・すでに使われている名前を述語に使っていませんか?
・コンピュ−タが PCS Cadmus ならば、fFコンパイルオプションを使っていますか? (2バイト/4バイト整数)
・ライブラリ−関数AtStrを使いましたか?もし使っていれば、IF/Prologが実際に使う項目を使っているということを忘れてはなりません。それをそのままにしておくことは、あなたのプログラムの責任です。たとえば、C言語でのストリングの表現形式は、Pascalの表現形式に変えることがあるかもしれません。しかし、その項目のコピ−に対して操作をするか、または用がすんだら変換したものを元に戻さなければなりません。
・Prologで整数を返してもらいたい時に、期待していたよりはるかに大きな値を受け取った時には、おそらくIntCPを呼ぶ前にINTによってintをlongにキャストしなかったためです。
| 冒頭へ |
|