我怎样才能使用Perl的C ++类?

时间:2009-06-01 07:27:58

标签: c++ perl xs

我有一组用C ++编写的类。从Perl脚本调用它们的最佳方法是什么?感谢。

3 个答案:

答案 0 :(得分:13)

我不是特别喜欢SWIG,而是喜欢自己编写接口代码。 Perl附带了一种称为“XS”的伪语言,用于连接C或C ++。不幸的是,为了使用它,你至少需要知道C,Perl,然后学习一些关于解释器API的知识。如果你已经熟悉Perl和C,那么这样就不是一大步了。查看XS上的以下核心文档:

  1. perlxstut(XS教程)
  2. perlxs(XS参考)
  3. perlapi(口译员API)
  4. 此外,互联网上还有大量的教程和方法。

    现在,使用XS与C ++接口需要一些额外的步骤。一开始锻炼可能有点令人沮丧,但是一旦你得到它就会整齐地落实到位。在这方面,核心文档充其量只是稀疏的。但一切都不会丢失。 Mattia Barbon是Perl的wxWidgets绑定的创建者,他写了一个很棒的工具“XS ++”,这使得它几乎变得简单(或者像XS一样简单)。它包含在Wx中,但我们正在努力将其拆分为自己的发行版。这项工作正在进行中。您可以在github上找到Mattia's XS++ codemodified version of mine

    除非向CPAN发布独立的XS ++,我建议学习从其他资源编写XS for C ++:

    • 很久以前,John Keizer写了一篇很棒的tutorial on XS and C++。它还包括对有用工具和文档的进一步指示。
    • 我从该教程学习了XS和C ++,以及我在CPAN上找到的一些例子。我不记得我当时看到了什么。但现在我可以指出我自己的工作(好的或坏的,我不知道)例子:Math::SymbolicX::FastEvaluator
    • 同样,计划中的XS ++发行版包含complete (albeit pointless) example使用XS ++来连接C ++和Perl。由于XS ++已转换为普通XS,因此您可以使用它来生成示例。

    PS:还有Inline :: CPP模块。如果可行,它可能是最简单的解决方案。我怀疑它可以处理模板。

答案 1 :(得分:10)

检查http://www.swig.org

  

“SWIG是一个软件开发工具   连接用C编写的程序   和C ++一起使用各种高级   编程语言。使用SWIG   使用不同类型的语言   包括常见的脚本语言   比如Perl,PHP,Python,Tcl和   红宝石“。

答案 2 :(得分:7)

我通常会选择XS,比如tsee,但在这种情况下还有Inline::C(或Inline::CPP)。我不喜欢SWiG并倾向于避免围绕它建立包裹。