如何在嵌入式Perl解释器中动态加载Perl扩展?

3

我正在我的C代码中嵌入Perl解释器(很有趣!)。

我需要动态加载Perl扩展(一种用C编写的扩展,可扩展Perl)。当我运行一个需要使用该扩展的Perl脚本(使用我的嵌入式Perl解释器)时,它将正常工作!


2
除非您正在更改Perl解释器以在嵌入式处理器上运行,否则此问题与嵌入式编程无关。请参阅stackoverflow.com/questions/tagged/embedded。 - uɐɪ
我同意Ian关于“嵌入式”标签的看法。因此,我将其删除,并添加了“perl-xs”,这更清楚地标识它与使用C扩展perl有关。 - tsee
我不同意这个评论。嵌入不仅与嵌入式编程有关,而且在许多编程领域中都是“从一个环境中取出/使用对象并放入另一个环境中”的概念。请参阅以下链接:http://perldoc.perl.org/perlembed.html#Embedding-Perl-under-Win32,http://docs.python.org/release/2.5.2/ext/embedding.html,http://www.debian-administration.org/articles/264等。标签“perl-xs”(扩展)与此问题有关,但这不是所问的主要问题。主要问题是:“在嵌入解释器时,如何进行动态加载?” - Vertilka
1个回答

6
请确保向 perl_parse 传递了一个 xs_init 函数,该函数将为您提供 DynaLoader::boot_DynaLoader。您可以使用 ExtUtils::Embed 自动编写这些内容。
有了这个,你所需要做的就是例如,评估一些代码,这些代码将会加载用C语言编写的扩展。
在 perlembed 中的“从您的C程序中使用使用C库的Perl模块”详细解释了这一点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接