怎样从perl中调用c库里的函数

    技术2022-05-11  112

    怎样从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)