| 网站首页 | 文章中心 | 下载中心 | 图片中心 | 访客留言 | 数码商城 | 毕设、论文 | 彩票 | 
您现在的位置: 有昌网络 >> 文章中心 >> 特别研究 >> Linux专区! >> Perl编程 >> 文章正文 用户登录 新用户注册
怎样从Perl中调用C库里的函数         ★★★
怎样从Perl中调用C库里的函数
作者:-①℃冰洁… 文章来源:本站原创 点击数: 更新时间:2007-4-26 17:45:33

  假如你所用的库是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!
文章录入:范有昌    责任编辑:范有昌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)