6

我有一个 C++ 对象,我正在使用 Perl XS 将其转换为 Perl。此过程适用于 Perl 5.8.5 和 5.8.7。但是,一旦我尝试使用 Perl 5.10.0,就会遇到很多编译错误。他们中的大多数人都是这样的:

对“PL_stack_max”的未定义引用
对“PL_stack_sp”的未定义引用
对“Perl_sv_2pv_flags”的未定义引用
对“Perl_sv_setref_pv”的未定义引用

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

有小费吗?

4

2 回答 2

7

迁移到 5.10.0 时是否重新编译了 XS 扩展?

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

在 Perl 的主要版本之间工作时,我看到过类似的问题,但最近还不足以确定导致问题的确切原因。但我似乎记得,在配置过程接近尾声的某个地方,有一个问题,即哪些 Perl 以前的版本要与 XS 扩展兼容,等等。

于 2009-08-07T22:42:38.540 回答
2

我在 64 位机器上使用 32 位 Perl 5.10.0。问题解决了!感谢大家的回应。

于 2009-08-14T15:07:19.957 回答