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

Sam*_*Lee 12 c++ perl xs

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

tse*_*see 14

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

  1. perlxstut(XS教程)
  2. perlxs(XS参考)
  3. perlapi(口译员API)

此外,还有很多关于互联网的教程和方法.

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

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

  • 很久以前,John Keizer写了一篇关于XS和C++的优秀教程.它还包括对有用工具和文档的进一步指示.
  • 我从该教程学习了XS和C++,并在CPAN上找到了一些例子.我不记得我当时看到了什么.但现在我可以指出我自己的工作(好的或坏的,我不知道)例子:Math :: SymbolicX :: FastEvaluator.
  • 类似地,计划的XS ++发行版包含一个完整的(虽然没有意义)使用XS ++来连接C++和Perl的例子.由于XS ++被转换为普通XS,您可以使用它来生成示例.

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


Igo*_*kon 10

查看http://www.swig.org:

"SWIG是一个软件开发工具,它将用C和C++编写的程序与各种高级编程语言连接起来.SWIG与不同类型的语言一起使用,包括常见的脚本语言,如Perl,PHP,Python,Tcl和Ruby."


jet*_*ero 7

我通常会选择XS,比如tsee,但也有Inline :: C(在本例中为Inline :: CPP).我不喜欢SWiG并且倾向于避免围绕它构建的包.

  • OP可能想要Inline :: CPP. (2认同)