怎样从Perl中调用C库里的函数

假如你所用的库是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!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值