Noriaki Haradaさんの<199909221706.CAA29318 / p2232.nsk.ne.jp>から

>この度、うちの BeOS R4.5.2(Intel) が入っているマシンに ruby-1.4.2 を
>導入しようとしたのですが、どうもうまく行かないので、以下にその経緯を
>書かせて頂きます。(長文です、御注意を)

>が、今度は「~.so」形式のライブラリをロードしようとすると、例えば
>
>---- ここから ----
>xterm@rtype:/boot/home/TMP/ruby-1.4.2/sample/>ruby from.rb
>/boot/home/config/lib/ruby/1.4/kconv.rb:1:in `require': Failed to load /boot/home/config/lib/ruby/1.4/i586-beos/nkf.so (LoadError)
>        from /boot/home/config/lib/ruby/1.4/kconv.rb:1
>        from from.rb:4:in `require'
>        from from.rb:4
>xterm@rtype:/boot/home/TMP/ruby-1.4.2/sample/>ls -l /boot/home/config/lib/ruby/1.4/i586-beos/nkf.so
>-r-xr-xr-x   1 baron    users     1433208 Sep 23 01:07 /boot/home/config/lib/ruby/1.4/i586-beos/nkf.so
>---- ここまで ----

同じ事象になったので調べてみました。
nkf.soをロードしているところ(load_add_on())で、B_MISSING_SYMBOLという
エラーが帰ってきています。

ext/nkf/nkf.c の Init_nkf() の前に、

__declspec(dllexport) void Init_nkf();

という行を追加したら、動的リンクで動作するようになりました。

ほかのライブラリも同じパターンでいけると思いますが、これしか試していま
せん。

-- 
NTTデータ COEシステム本部 分散開発管理
森田 淳/Atsushi Morita  moritaa / coe.nttdata.co.jp