zhumao

新手上路

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

假如你所用的库是mylib.a 头文件是mylib.h
假如mylib.h像以下内容
       extern void hello();
hello()函数假如执行如下功能:
 void hello()
 {
     printf("Success call from perl to c libray!\n";
 }


一、建立工作目录mytest,把mylib.a和mylib.h放到mytest中
二、在mytest的上层目录执行
          h2xs -O -n mytest ./mytest/mylib.h
三、进入mytest,修改mytest.xs,在文件末尾增加perl接口
  
 void
 hello()
        CODE:
         hello();
  
 改变#include <./mytest/mylib.h>
 为 #include "mylib.h"
 一般情况下此行都需要修改。
 
四、修改Makefile.PL,其中#add begin和#add end中间的内容是新增加的。
 use ExtUtils::MakeMaker;
 # See lib/ExtUtils/MakeMaker.pm for details of how to influence
 # the contents of the Makefile that is written.
 WriteMakefile(
    'NAME'      => 'mytest',
    'VERSION_FROM' => 'mytest.pm', # finds $VERSION
    'LIBS'      => [''],   # e.g., '-lm'
    'DEFINE'    => '',     # e.g., '-DHAVE_SOMETHING'
    'INC'       => '',     # e.g., '-I/usr/include/other'
    #add begin
    'MYEXTLIB'  => 'mylib.a',
    #add end
 );
    #add begin
 sub MY::postamble()
 {
 '
 $(MYEXTLIB): .
 ';
 
#add end
 }
  
五、执行perl Makefile.PL,让perl生成makefile
六、执行make
七、修改测试文件test.pl,修改完毕后改变为可执行
    #!/usr/bin/perl
    # Before `make install' is performed this script should be runnable with
    # `make test'. After `make install' it should work as `perl test.pl'

    ######################### We start with some black magic to print on failure.

    # Change 1..1 below to 1..last_test_to_print .
    # (It may become useful if the test is moved to ./t subdirectory.)

    use ExtUtils::testlib;
    BEGIN { $| = 1; print "1..1\n"; }
    END {print "not ok 1\n" unless $loaded;}
    use mytest;
    $loaded = 1;
    print "ok 1\n";

    ######################### End of black magic.

    # Insert your test code below (better if it prints "ok 13"
    # (correspondingly "not ok 13") depending on the success of chunk 13
    # of the test code):
    mytest::hello();
   
八、此时你应该能够看到
    Success call from perl to c libray!

posted on 2004-06-18 07:52  zhumao-2  阅读(735)  评论(0编辑  收藏  举报