perl Inline :: C是否支持多个相关的C文件?

问题描述

此问题基于:Perl: how can I put all my inline C code into a separate file?,但用于多个文件

假设您要在名为foo.c的perl中包含C文件

#include "bar.h"

int foo(...

如您所见,foo.c取决于与bar.h关联的bar.c

Inline :: C是否可以同时编译foo.cbar.c链接bar.o以便foo()正常工作?

解决方法

Inline :: C根据提供的代码在以前不存在的目录中生成一个.xs文件。然后,它使用标准的Perl工具链从中创建一个共享库。在任何时候都没有foo.cbar.c可供工具链编译。

您可以根据您描述的两个编译单元(foo.cbar.c)创建一个库(静态或共享)。内联:: C可以轻松链接到这些。 Alien提供了用于创建要使用的模块的库的基础结构。 This page介绍了如何创建用于构建库的Alien :: *模块。