如何从Perl调用C ++静态库?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (61)

我正在编写一个C ++静态库,需要在多个应用程序之间共享,其中一个是用Perl编写的。不幸的是,我只知道核心的Perl语言(我读过Llama书),而且我并不熟悉它的库。如何从Perl脚本调用外部C ++二进制文件?

通过Google搜索,我在Perl Inline模块上找到了相关信息,但如果我理解正确,那就不是我需要的了。我很确定这是用于直接在Perl脚本中编写C和C ++代码,而不是用于调用外部C ++库。

C ++静态库正在为ARM处理器进行交叉编译,因此在运行Perl脚本的目标机器上将不会有C ++编译器。(如果这有所不同。)

提问于
用户回答回答于

您需要创建一个可以从perl和AFAIK调用的包装函数,您需要将此包装函数放在动态库中(除非您要重建perl二进制文件并将静态库链接到它)。我喜欢使用一个名为SWIG(Simple Wrapper Interface Generator)的工具为我创建包装器。它也可以为17种左右的其他语言创建包装器。

用户回答回答于

您可以通过Inline :: C调用其他库中的代码(也可能通过Inline :: CPP调用相同的代码) - 看看Inline :: C :: Cookbook。很可能你想从Inline开始,在你完成实验之后使用生成的.XS文件来进一步工作。

扫码关注云+社区

领取腾讯云代金券