2011-12-27 2 views
1

Я должен переключить нашу среду разработки с ActiveState Perl 5.6.0 на Strawberry Perl 5.12, но я застрял на одном модуле.Perl 5.12 loading Модуль с DLL, созданный для Perl 5.6

Мы создали собственный модуль, который также включает в себя dll (по соображениям производительности). Теперь этот модуль был скомпилирован для Perl 5.6.0. Проблема в том, что у нас больше нет исходного кода, но нам нужно, чтобы этот модуль каким-то образом работал с новой версией Perl.

Есть ли даже возможность сделать это, не перекомпилируя этот модуль для perl 5.12?

Когда я пытаюсь загрузить его, он говорит, что он не может найти требуемую DLL, но путь правильный, и файл есть, поэтому проблема с загрузкой в ​​версиях кажется проблемой.

ТИА Патрик

+0

Нужна дополнительная информация. Как DLL используется этим модулем Perl? Существуют ли какие-либо модули Perl для использования DLL? Укажите точное сообщение об ошибке. – Zaid

+0

@ Zaid, Он говорит о скомпилированном XS-коде («скомпилированный модуль»). – ikegami

+0

Вам нужно будет скомпилировать его для новой версии Perl. Это означает, что вам придется переписать его. Там действительно нет хорошего пути. –

ответ

4

библиотека No. The Perl не гарантирует поддерживать бинарную совместимость между основными версиями, и что-то скомпилированные для 5.6 не двоичная совместима с 5,12 библиотекой Perl. Единственный способ загрузить этот модуль - это если Perl 5.6 каким-то образом задействован.

+0

Да, я так понял. Я на самом деле просто нашел версию только для Perl этого модуля, которая имеет некоторые проблемы с производительностью (поэтому на первом месте был создан расширенный модуль perl .dll). Это работает, но производительность является slugish в cgi, должно стать лучше, когда мы переключимся на fcgi, я надеюсь. – PWFraley

Смежные вопросы