我知道这里还有另外两个问题是针对同样的事情,但我的问题来自于实际尝试那里的建议,并希望从那时起有一些其他选择对人们有效。
设置是这样的:我有一个包含多个模块的应用程序,我想与安装了Strawberry Perl发行版的Windows计算机上的某个人共享。
它的结构是这样的:
PerlApp
lib
Base
Base.pm
Gui.pm
Db
Db.pm
records.db
Parser
Parser.pm
Utils
Utils.pm
PerlApp.pl
Config.txt所有这些都有两个切入点。我可以使用PerlApp.pl脚本通过cmd行接口运行它,也可以运行包含它的Wx接口的Gui.pm文件。
我正在使用从CPAN安装的几个模块运行Strawberry Perl,该程序使用这些模块。我尝试使用Cava Packager,不幸的是它不支持我用来开发它的perl版本。
我已经尝试过pp,但是打包cmd脚本所产生的可执行文件导致了各种错误。我查阅了文档,但无论如何我都不知道如何使用这个模块来打包一个完整的目录树,或者它是否被支持。(电话簿文档综合征)
我试过了
pp -o app.exe PerlApp.pl错误是:
The locale codeset (cp1252) isn't one that perl can decode, stopped at Encode/Locale.pm line 94
Compilation failed in require at LWP/UserAgent.pm line 1000
Compilation failed in require at lib/Base/Base.pm line 9最后的解决方案是打包所有需要的文件,并找出需要在外部机器上安装哪些CPAN模块才能使其工作,最终要求用户自己手动安装它们。
发布于 2014-04-17 22:55:51
在打包perl脚本时,我曾经遇到过与字符集(或Windows上的代码页)相关的类似错误。我到处用谷歌搜索,但没有找到任何直接的答案,但最终我自己找到了答案。
Encode::Locale在运行时确定适当的字符集,而PP只是在编译时添加必要的依赖项(如果我可以这么说的话)。因此您需要在添加运行时dependencies.Encode::Locale的命令中添加-x选项。即使您将必要的解码器pm打包到您的可执行文件中,当它在另一个具有不同字符集的系统上运行时,也会出现类似的错误。我建议您找出代码的哪一行使用Encode::Locale,并找出解决方法。https://stackoverflow.com/questions/21601945
复制相似问题