使用Perl 5.10编译XS时,为什么会出现“未定义的引用”错误?

时间:2009-08-07 22:11:43

标签: perl perl-xs

我有一个C ++对象,我使用Perl XS转换为Perl。这个过程适用于Perl 5.8.5和5.8.7。但是当我尝试使用Perl 5.10.0时,我遇到了很多编译错误。他们中的大多数都是这样的:

undefined reference to 'PL_stack_max'
undefined reference to 'PL_stack_sp'
undefined reference to 'Perl_sv_2pv_flags'
undefined reference to 'Perl_sv_setref_pv'

这告诉我由于某种原因,Perl XS的东西没有正确链接。当我从5.8.5升级到v5.8.7时,我只需要更改版本并重新制作。

任何提示?

2 个答案:

答案 0 :(得分:7)

移动到5.10.0后,您是否重新编译了XS扩展?

您是否设置了Perl 5.10.0以在构建时保持向后兼容性? (这是否可能?我从未试图建立向后兼容性,所以我不能确定它甚至是一个选项,@ Ysth认为它不是。)

我在Perl的主要版本之间工作时遇到过类似的问题,但最近还没有充分确信究竟是什么原因造成了问题。但我似乎记得在配置过程即将结束的某个地方存在一个问题,即哪个以前版本的Perl与XS扩展兼容等等。

答案 1 :(得分:2)

我在64位机器上使用32位Perl 5.10.0。问题解决了! 感谢所有回复的人。