原因判明
前回のAllegorCLで生成したアプリのランタイムエラーの原因がやっと判明.原因は,compile-fileが含まれるということではなく,いつの間にかコンパイラを呼び出す関数(マクロ?)を呼び出すプログラミングになっていた模様.まあ,Lispですから.
OpenGL(GLUT)アプリケーションなので,コールバック関数を登録しないといけないが,GLUTはオブジェクト指向ではない.そこで呼び出されるlisp関数を生成するマクロff:defun-foreign-callableをGLUTのWindowのためのCLOSオブジェクトを生成するたびにevalするようにしていたことが原因.マルチウィンドウは実は使ってないけど,将来を考えて,ついついそうしてしまっていた.
コールバック関数を1つだけに変更して修正完了.これでうまく動くようになった!と思いきや,新たな実行時エラーが発生.
GLUT Fatal Error: glutInit can't open GLUT.nib
意味不明なので,「glutInit can't open GLUT.nib」で検索するとADCのglutのページ1件だけにヒット.
void APIENTRY glutInit(int *argcp, char **argv) { 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 /* Initialize our application instance */ NSApp = [GLUTApplication sharedApplication]; if (![NSBundle loadNibNamed:@"GLUT" owner:NSApp]) { __glutFatalError("glutInit can't open GLUT.nib"); // will exit }
うーん,nibって何?