【问题标题】:Perl .exe file: Can't call method “encode” on an undefined valuePerl .exe 文件:无法对未定义的值调用方法“编码​​”
【发布时间】:2016-06-23 00:07:28
【问题描述】:

我是 Perl 的初学者。 我制作了我的 Perl 脚本,我想将 Perl 脚本制作成一个独立的可执行文件。为了创建 .exe 文件,我使用了PAR::Packer。创建并执行 .exe 文件后出现这样的错误:

  Can't call method "encode" on an undefined value at Win32/Unicode/Util.pm line 36, <DATA> line 2125.
    Compilation failed in require at Win32/Unicode.pm line 14, <DATA> line 2125.
    BEGIN failed--compilation aborted at Win32/Unicode.pm line 14, <DATA> line 2125.
    Compilation failed in require at if.pm line 13, <DATA> line 2125.
    BEGIN failed--compilation aborted at App/Weryfikacja/Term.pm line 7, <DATA> line 2125.
    Compilation failed in require at App/Weryfikacja/Log.pm line 8, <DATA> line 2125.
    BEGIN failed--compilation aborted at App/Weryfikacja/Log.pm line 8, <DATA> line 2125.
    Compilation failed in require at App/Weryfikacja.pm line 17, <DATA> line 2125.
    BEGIN failed--compilation aborted at App/Weryfikacja.pm line 17, <DATA> line 2125.
    Compilation failed in require at script/diagfull.pl line 54, <DATA> line 2125.
    BEGIN failed--compilation aborted at script/diagfull.pl line 54, <DATA> line 2125.

我想注意到 Perl 脚本运行良好。什么会导致我的 .exe 文件不起作用?也许我需要在 .exe 文件中添加模块或类似的东西?

【问题讨论】:

    标签: perl exe mojo


    【解决方案1】:

    如果您可以提供您如何使用 PAR::Packer 中的 pp 实用程序的详细信息,其他人可能更容易提供帮助。如果没有这些细节,我将假设您执行了“pp -o test.exe test.pl”之类的操作。

    我建议的第一件事是使用 -c 和/或 -x 选项。这些选项用于“确定额外的运行时依赖项”。请记住,这些是区分大小写的选项。

    如果这不能解决所有问题,您可能需要使用其他选项。查看pp 实用程序的文档以获取有关其他选项的更多详细信息。

    另外,我注意到您在问题中添加了“mojo”标签,所以我假设您的代码正在使用 Mojolicious。如果是这种情况,您可能需要查看blog 以获得有关使用 Mojolicious 创建独立应用程序的一些帮助。

    【讨论】:

    • 如你所写,我使用了“pp - o test.exe test.pl”
    • 感谢 dasgar 的帮助。我使用了“pp -c test.pl”,它可以工作:)
    【解决方案2】:

    我遇到了类似的问题,对我来说,这个问题通过https://stackoverflow.com/a/18523251/3227721Nate Glenn 对这个问题What to include when using Encode with PAR Packer 的回答解决了:

    罪魁祸首是 Encode.pm 第 120 行用于加载 Encode::Unicode 的运行时要求。为了使这个程序正常工作,我使用了以下内容:

    pp -o encode_test.exe encode_test.pl -M C:/strawberry/perl/lib/Encode/Unicode.pm

    我用-M Encode::Unicode

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      相关资源
      最近更新 更多