【问题标题】:Perl 5.12 loading Module with DLL created for Perl 5.6Perl 5.12 加载模块,带有为 Perl 5.6 创建的 DLL
【发布时间】:2012-01-28 09:41:02
【问题描述】:

我应该将我们的开发环境从 ActiveState Perl 5.6.0 切换到 Strawberry Perl 5.12,但我被困在一个模块上。

我们创建了自己的模块,其中还包含一个 dll(出于性能原因)。现在该模块是为 Perl 5.6.0 编译的。问题是,我们不再拥有源代码,但我们需要让该模块以某种方式与新的 Perl 版本一起使用。

是否有机会这样做,而不必为 perl 5.12 重新编译该模块?

当我尝试加载它时,它说它找不到所需的dll,但路径正确并且文件在那里,所以它似乎是版本的加载问题。

TIA 帕特里克

【问题讨论】:

  • 需要更多信息。这个 Perl 模块如何使用 DLL?是否有任何 Perl 模块用于使用 DLL?请提供确切的错误信息。
  • @Zaid,他说的是已编译的 XS 代码(“已编译模块”)。
  • 您将不得不为新版本的 Perl 编译它。这意味着你将不得不重写它。真的没有什么好的办法。

标签: windows perl dll binary perl-module


【解决方案1】:

没有。 Perl 库不保证在主要版本之间保持二进制兼容性,并且为 5.6 编译的内容与 Perl 5.12 库的二进制不兼容。加载该模块的唯一方法是是否以某种方式涉及 Perl 5.6。

【讨论】:

  • 是的,我也这么认为。实际上,我只是发现了这个模块的仅 Perl 版本,它存在一些性能问题(这就是为什么首先生成 .dll 扩展 perl 模块的原因)。它可以工作,但在 cgi 中性能很慢,我希望当我们切换到 fcgi 时会变得更好。
猜你喜欢
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多