Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C++;来自Perl的类? 我有一套C++语言编写的类。从Perl脚本调用它们的最佳方式是什么?谢谢。_C++_Perl_Xs - Fatal编程技术网

如何使用C++;来自Perl的类? 我有一套C++语言编写的类。从Perl脚本调用它们的最佳方式是什么?谢谢。

如何使用C++;来自Perl的类? 我有一套C++语言编写的类。从Perl脚本调用它们的最佳方式是什么?谢谢。,c++,perl,xs,C++,Perl,Xs,检查: “SWIG是一种软件开发工具 连接用C编写的程序的 C++与各种高级语言 编程语言。使用SWIG 使用不同类型的语言 包括通用脚本语言 例如Perl、PHP、Python、Tcl和 红宝石。” 我不是特别喜欢SWIG,我更喜欢自己编写接口代码。Perl附带了一种伪语言,称为“XS”,用于连接到C或C++。不幸的是,为了使用它,您至少需要了解C、Perl,然后还要学习一些关于解释器API的知识。如果您已经熟悉Perl和C,那么这并不是一个很大的步骤。请看一下XS上的以下核心文档: (XS教

检查:

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


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

  • (XS教程)
  • (XS参考)
  • (解释器API)
  • 此外,网上还有很多教程和指南

    现在,使用XS接口到C++需要一些额外的步骤。刚开始做这项工作可能会有点令人沮丧,但一旦你做了,它就会很好地适应了。在这方面,核心文档充其量是稀疏的。但这一切并没有失去。Mattia Barbon是Perl的wxWidgets绑定的创建者,他编写了一个很棒的工具“XS++”,使它变得非常简单(或者像XS一样简单)。它包含在Wx中,但我们正在将其拆分为自己的发行版。这是正在进行的工作。您可以在github上找到和

    禁止将一个独立的XS++导入到CPAN中,我建议学习从其他资源编写C++的XS:

    • 很久以前,约翰·凯瑟写了一篇优秀的文章。它还包括指向有用工具和文档的更多指针
    • 我从那个教程中学习了XS&C++以及在CPAN上找到的一些示例。我不记得当时我看了什么。但现在我可以把我自己的工作作为一个(好的或坏的,我不知道)例子:
    • <> LI>同样,XS+分布的计划包含了使用XS++来C++和Perl的接口。由于XS++被转换为普通XS,因此可以使用它生成示例

    PS:还有内联::CPP模块。如果这样做有效,这可能是最简单的解决方案。不过,我怀疑它能否处理模板。

    我通常会选择XS,比如tsee,但也有(或者在本例中)。我不喜欢SWiG,并且倾向于避免使用围绕它构建的包。

    忘了提到一个小细节:约翰·凯瑟的教程有一个到迪安·罗赫里奇的CPAN目录的链接。该链接指向过时的CPAN镜像。试试这个:XS++已经作为ExtUtils::XSpp发布到CPAN:它还处于早期,但我已经用它成功地构建了Wx.pm。不过OP可能需要Inline::CPP。当然是这样。我个人甚至没有意识到这一点。+1
    内联
    模块确实使将外部代码集成到Perl中变得容易得多。