假如你所用的库是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] 举报,一经查实,本站将立刻删除。