[Gauche-devel-jp] Re: define-cclassについて

アーカイブの一覧に戻る

Shiro Kawai shiro****@lava*****
2004年 1月 25日 (日) 18:51:13 JST


From: えんどう <yasuy****@javao*****>
Subject: [Gauche-devel-jp] Re: define-cclassについて
Date: Sun, 25 Jan 2004 18:19:58 +0900

> ScmSysFlock 型がどこにも定義されていないように見えるのですが、
> この型はどう定義されるのでしょうか...?

ext/fcntl/gauche/fcntl.h にあります。

> >    $ gosh -I.
> >    gosh> (dynamic-load "mysql")
> >    #t
> >    gosh> (d <mysql-handle>)
> >    *** ERROR: unbound variable: <mysql-handle>
> >    Stack Trace:
> >    _______________________________________
> >    gosh> (d <mysql-res>)
> >    *** ERROR: unbound variable: <mysql-res>
> >    Stack Trace:
> >    _______________________________________
> >
> >これは、<mysql-handle>等が定義されてるモジュールをimportしてないだけ、
> >もしくはそのモジュールから<mysql-handle>がexportされていないだけ、
> >とかいう可能性はありますか?  
> 
> <mysql-handle> の定義は mysql.so にあるので、
> mysql.so を dynamic-load すれば<mysql-handle> が Gauche 側に見えると
> 思っていたのですが、

mysql.soをdynamic-loadすれば、<mysql-handle>の束縛はどこかの
モジュールに挿入されます。どこに挿入されるかは、.soファイルの初期化
関数中で明示的に指定してあるはずです (Scm_InitBuiltinClassの最後の
引数)。

そのモジュールの束縛が、現在のモジュールから見えるかどうかは、
通常のimport/exportでコントロールされます。

> dbd.mysql モジュールを書き、その中で (dynamic-load "mysql")を行い、
> <mysql-handle> をexportしてみました。
> 
> mysql.so があるディレクトリーで gosh -I. で Gauche を起動し、
> (use dbd.mysql) のあと (d <mysql-handle>) を試してみました。
> 
> $ gosh -I.
> gosh> (add-load-path "/home/yasuyuki/kahua/dbi")
> ("/home/yasuyuki/kahua/dbi" "/home/yasuyuki/kahua/dbd" "." "/usr/local/
> share/gauche/site/lib" "/usr/local/share/gauche/0.7.3/lib")
> gosh> (use dbd.mysql)
> (#<module dbd.mysql> #<module gauche.interactive>)
> gosh> (d <mysql-handle>)
> *** ERROR: unbound variable: <mysql-handle>
> Stack Trace:
> _______________________________________
> 
> dbd.mysql モジュールでは (dynamic-load "mysql") だけではダメで、
> 何か別の定義が必要なのでしょうか...?

まず、dbd.mysqlモジュールの中で<mysql-handle>が見えているかどうか
確かめてみて下さい。

  gosh> (with-module dbd.mysql <mysql-handle>)

これで見えていれば、export/importの方の問題、見えていなければ、
mysql.so自身が<mysql-handle>を正しいモジュールに束縛していない
ということになります。

--shiro





Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る