微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

怎样从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'    => '','-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!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐