gpt4 book ai didi

perl - 如何将静态 C 对象文件链接到 Perl?

转载 作者:行者123 更新时间:2023-12-04 16:49:30 25 4
gpt4 key购买 nike

我有一个用 C 编写的函数(在 HelloWorld.c 文件中说)。
我想编译它并需要创建一个静态对象文件 HelloWorld.a

最后,我需要从 Perl 程序 (HelloWorld.pl) 中调用它。

最佳答案

要从 perl 调用 C,通常需要从他的 c 代码编译一个共享库,而不是静态库,然后使用 XSLoader 将其加载到 perl 解释器中。或 DynaLoader模块。

然后能够从 perl 空间调用 C 代码有很多方法。最常见的是写一个叫做 XSUB 的东西。 s,具有 perl 端接口(interface),将 perl 调用约定映射到 C 调用约定,并调用 C 函数。这些 XSUB 通常也链接到共享库,该库将加载到 perl 中,并用一种​​称为 XS 的语言编写,在 perlxs 中有大量文档。和 perlxstut .

还有其他方法可以构建该包装层,例如各种 XS 代码生成器以及 SWIG。但是您也可以使用 NCI 直接调用 C 函数。 . Perl 也有很多。 P5NCI就是其中一个例子,在今年的 Google Summer of Code 项目中开发的 ctypes 模块就是另一个例子。

这里可能应该提到的另一个相关技术是Inline::C。 ,以及 Inline 系列的其他模块。它们允许您直接在 perl 中用其他语言编写代码,并调用它。在幕后 Inline::C 只是构建 XS 代码并将其结果加载到解释器中。

关于perl - 如何将静态 C 对象文件链接到 Perl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3810759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com