Pra*_*odh 5 perl static object
我有一个用C编写的函数(在HelloWorld.c文件中说).我想编译它,需要创建一个staic对象文件HelloWorld.a
最后,我需要从Perl程序(HelloWorld.pl)中调用它.
要从perl调用C,通常从他的c代码编译共享的,而不是静态的库,然后使用XSLoader
or DynaLoader
模块将其加载到perl解释器中.
那么能够从perl空间调用C代码有很多方法.最常见的是编写一个名为XSUB
s的东西,它有一个perl-side接口,将perl调用约定映射到C调用约定,并调用C函数.这些XSUB通常也链接到将被加载到perl中的共享库,并使用称为XS的语言编写,该语言在perlxs和perlxstut中有详细记录.
还有其他方法来构建包装层,如各种XS代码生成器,以及SWIG.但是你也可以使用一个直接调用C函数NCI
.Perl也有很多.这P5NCI
就是其中一个例子,今年的Google Summer of Code计划开发的ctypes模块是另一个.
这里应该提到的另一个相关技术是Inline::C
和Inline系列的其他模块.它们允许您直接在perl中编写其他语言的代码,并调用它.在引擎盖下Inline :: C只是构建XS代码并将其结果加载到解释器中.