我有一组用C++编写的类。从Perl脚本中调用它们的最佳方法是什么?谢谢。
我不太喜欢使用SWIG,更喜欢自己编写接口代码。Perl带有一种伪语言称为'XS',用于与C或C++进行接口交互。不幸的是,要使用它,您需要至少了解C、Perl,并学习一些关于解释器API的知识。如果您已经很熟悉Perl和C,那么这并不是一个大的难题。请参阅以下核心文档关于XS的内容:
此外,网络上还有许多教程和指南。
现在,使用XS与C++进行接口交互需要一些额外的步骤。起初,可能会有点令人沮丧,但一旦掌握,就会变得简单明了。在这方面,核心文档的可用性最佳。但一切都没有丧失。wxWidgets的Perl绑定程序创建者Mattia Barbon编写了一个很棒的工具"XS++",使这变得非常简单(或者像XS一样简单)。它包含在Wx中,但我们正在努力将其拆分为自己的发行版。这是正在进行的工作。您可以在github上找到Mattia的XS++代码和我修改过的版本。
除了独立发布XS++到CPAN外,我建议从其他资源学习如何使用XS编写C ++:
PS:还有 Inline::CPP 模块。如果它能正常工作,那可能是最简单的解决方案。但我怀疑它不能处理模板。
“SWIG是一个软件开发工具,它能够将用C和C++编写的程序与多种高级编程语言连接起来。SWIG可用于包括Perl、PHP、Python、Tcl和Ruby在内的不同类型的语言。”
通常我会选择XS,就像tsee一样,但在这种情况下还有Inline::C(或Inline::CPP)。我不喜欢SWiG,并且倾向于避免围绕它构建的软件包。
Inline
模块确实使将外部代码集成到 Perl 中变得更加容易。 - mob