ねこのつづき

This entry was posted by on Friday, 19 August, 2005
>標準ライブラリを使ってみよう!と思って、 > >$print(math_pi()); > >というプログラムを書いてコンパイルして実行すると実行結果は、 > >null > >となる。なんでじゃー。 > >ドキュメントを読む限り、 ndll は特に指定しなくてもカレントディレクトリと NEKOPATH なパスをサーチしてくれるみたいなんだけど、何か必要なんだろうか? > >そもそもこれは、 > > >nekovm が名前解決ができてない場合に null になる > > > >ライブラリがロードできないので null になる > > > >そもそもライブラリが適切に生成されていないのでヘンなコードを実行して null になる > > > > >のどれなのかがわからんねぇ……。そもそもどのライブラリを読むとどの名前が埋まっている、みたいな情報はどうやって得るのかな。どうも指示をしていないので std.ndll を読んでないだけのような悪寒。 > >まあヒマがあったらライブラリロードまわりのコードを読んでみよう。 > >それから、 FreeBSD でビルドしてみたぜ!という報告をMLにしてみたら、 OpenBSD でビルドしたよ!という強者がいた。負けた。 > >(追記)まったく勘違いしていた。 > >var math_pi = $loader.loadprim("std@math_pi"); > >などとしないといけないようだ。解決されない名前はぜんぶ null になるんだろう。 > >で、実行すると、 Primitive not found のエラー。うーむ、 dlsym でシンボルが取れてないのかなあ。 > >あ、 FreeBSD だと Library not found だから dlopen でコケてるし。とほー。 >

Comments are closed.