タグ

DynaLoaderに関するclouderのブックマーク (2)

  • wakaponさんの超☆Perl備忘帳: XS xsubpp Dynaloader MakeMaker typemap

    XSをまったく使ったことが無かったので試してみることにした。XSUBをPerlに組込むわけではないので、xsubppで出力した結果(XSUB)を見ながらにやにやするにとどまる。 まずは、MODULE、PACKAGE、PROTOTYPE、INPUT、PREINIT、CODEから。今回は引数スタックをPPしないので、ただのCODE。以下に試したXSを示す。 hoge.xs MODULE = HOGE   PACKAGE = HOGE char * hoge_hello (num) PROTOTYPE:$ INPUT:    int num; PREINIT:    int i;    static char *no = "no";    static char *ok = "ok"; CODE:    if (num < 0)    { RETVAL = no; }    else    {

  • wakaponさんの超☆Perl備忘帳: DynaLoader.pm XSLoader.pm newXS

    DynaLoader.pmとXSLoader.pmまわりのお話.動作の仕方や,両者の違いなどを見ていく.参考にしたのはperl5.10.0のソースツリー. 1. XSUBとnewXS DynaLoaderの質はXSUBなので,まずはそのあたりから見ていく.XSUBを使ったモジュール(=Pure-Perlじゃないモジュール)を作成するときには,DynaLoader.pmやXSLoader.pmを使う.例えばthreads.pmの場合,冒頭に以下のような記述がある. # Load the XS code require XSLoader; XSLoader::load('threads', $XS_VERSION); これでXSUB(単にCのサブルーチン; XSコード)をPerl処理系に組込んだことになる.この「組込む」という工程には,newXSが使われる.例えばthreads->creat

  • 1