Почему я получаю ошибки «неопределенная ссылка» при компиляции XS с Perl 5.10? - PullRequest
6 голосов
/ 08 августа 2009

У меня есть объект C ++, который я конвертирую в Perl с помощью Perl XS. Этот процесс прекрасно работает с 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 ]

7 голосов
/ 08 августа 2009

Перекомпилировали ли вы расширения XS при переходе на 5.10.0?

Вы установили Perl 5.10.0 для обеспечения обратной совместимости при его сборке? (Возможно ли это? Я никогда не пытался создать обратную совместимость, поэтому я не уверен, что это даже вариант, и @Ysth считает, что это не так.)

Я видел похожие проблемы при работе между основными версиями Perl, но не так давно, чтобы быть уверенным в том, что именно вызывает проблему. Но, похоже, я помню, что где-то ближе к концу процесса настройки возникает вопрос о том, с какими предыдущими версиями Perl быть совместимыми для расширений XS и т. Д.

2 голосов
/ 14 августа 2009

Я использовал 32-битный Perl 5.10.0 на 64-битной машине. Задача решена! Спасибо всем, кто откликнулся.

...