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

最佳答案

我并不特别喜欢SWIG,而是更喜欢自己编写接口(interface)代码。 Perl带有一种称为“XS”的伪语言,用于连接C或C++。不幸的是,要使用它,您将需要至少了解C,Perl,然后再学习一些有关解释器API的知识。如果您已经非常了解Perl和C,那么这并不是什么大步骤。看一下以下有关XS的核心文档:

  • perlxstut(XS教程)
  • perlxs(XS引用)
  • perlapi(解释器API)

  • 此外,互联网上还有很多教程和操作方法。

    现在,使用XS连接C++需要一些额外的步骤。刚开始工作时可能会感到有些沮丧,但是一旦您掌握了它,它就会整齐地摆放到位。在这方面,核心文档充其量是稀疏的。但是,一切并没有丢失。 Perl的wxWidgets绑定(bind)的创建者Mattia Barbon编写了一个出色的工具“XS++”,使这几乎简直变得简单(或与XS一样简单)。它包含在Wx中,但我们正在努力将其拆分成自己的发行版。这项工作正在进行中。您可以在github上找到Mattia's XS++ codemodified version of mine

    除非将独立的XS++发布到CPAN,否则我建议从其他资源中学习为C++编写XS:
  • 很久以前,John Keizer撰写了出色的tutorial on XS and C++。它还包括指向有用工具和文档的更多指针。
  • 我从该教程和在CPAN上找到的一些示例中学到了XS&C++。我不记得当时的情况。但是现在我可以将自己的工作作为一个示例(好或坏,我不知道):Math::SymbolicX::FastEvaluator
  • 同样,计划的XS++发行版包含一个使用XS++连接C++和Perl的complete (albeit pointless) example。由于XS++已转换为纯XS,因此您可以使用它来生成示例。

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

    关于c++ - 如何使用Perl中的C++类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/933844/

    10-11 19:37
    查看更多