首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用perl2exe时的库问题

使用perl2exe时的库问题
EN

Stack Overflow用户
提问于 2014-09-29 15:09:58
回答 3查看 1.8K关注 0票数 1

我正在尝试将我的Perl脚本转换为独立的exe。我认为perl2exe是一个实现这一目的的工具。或多或少。

当我试图生成exe文件时,我会遇到库问题。

图书馆的问题之一是:

代码语言:javascript
复制
Warning: Can't locate VMS/Stdio.pm
at C:\Perl\lib\File\Temp.pm line 19
@INC = C:\Perl\site\lib, C:\Perl\lib, ., C:\Perl\lib\Digest, must be directory, not file)

当我进入Temp.pm的第19行时,这一行写得如下:

代码语言:javascript
复制
require VMS::Stdio if $^O eq 'VMS';

但是,我的操作系统是MSWin32。我得出的结论是,perl2exe没有正确编译脚本。它把我的操作系统看错了。

示例脚本如下:

my_libraries.pl

代码语言:javascript
复制
use Tk;
use lib 'C:\Perl\lib\Digest';
use strict;
use strict;
use warnings;
use strict;
use warnings;
use LWP::Simple qw(getstore);
use LWP::UserAgent;
use Digest::MD5    qw( md5_hex );
use Digest::MD5::File qw( file_md5_hex );
use File::Fetch;
use WWW::Mechanize ;
use Tk::ErrorDialog;


c:\perl2exe\perl2exe-16.00-Win> perl2exe my_libraries.pl my_libraries.exe


Warning: Can't locate File/BSDGlob.pm
    at C:\Perl\lib\File\GlobMapper.pm line 13
    @INC = C:\Perl\site\lib, C:\Perl\lib, ., C:\Perl\lib\Digest, must be directory, not file)

Warning: Can't locate Digest/Perl/MD5.pm
    at C:\Perl\lib\Digest\MD5.pm line 30
    @INC = C:\Perl\site\lib, C:\Perl\lib, ., C:\Perl\lib\Digest, must be directory, not file)

Warning: Can't locate VMS/Stdio.pm
    at C:\Perl\lib\File\Temp.pm line 19
    @INC = C:\Perl\site\lib, C:\Perl\lib, ., C:\Perl\lib\Digest, must be directory, not file)

Warning: Can't locate VMS/DCLsym.pm
    at C:\Perl\lib\IPC\Cmd.pm line 227
    @INC = C:\Perl\site\lib, C:\Perl\lib, ., C:\Perl\lib\Digest, must be directory, not file)

Warning: Can't locate VMS/Filespec.pm
    at C:\Perl\lib\ExtUtils\Manifest.pm line 31
    @INC = C:\Perl\site\lib, C:\Perl\lib, ., C:\Perl\lib\Digest, must be directory, not file)

Warning: Can't locate HTML/FormatText.pm
    at C:\Perl\lib\HTML\Element.pm line 1297
    @INC = C:\Perl\site\lib, C:\Perl\lib, ., C:\Perl\lib\Digest, must be directory, not file)

抱歉的。让我在这里提出一个显而易见的问题:为什么perl2exe给出的库问题是不打算出现的?是perl2exe中的一个bug,还是我做错了什么?我的意思是,您可以在第19行看到,如果操作系统是'VMS',那么stdio.pm是必需的。我的操作系统是‘MSWin32 32’。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-14 06:28:07

我尝试了一个to z可能的补救,以使perl2exe工作。我删除了生成警告的部分(哈克模块)。研究并尝试了各种旗帜。我不得不说,使用不同模块将Perl程序转换为使用perl2exe的exe文件是完全不可行的。

我找到了一个软件,完全符合我的要求-卡瓦包。花了一段时间才找到下面的页面- How can I package my Perl script to run on a machine without Perl?

它将我的Perl程序转换为Exe,并生成一个安装文件。太棒了。

谢谢,阿诺普。

票数 0
EN

Stack Overflow用户

发布于 2016-11-27 16:18:55

问题是

代码语言:javascript
复制
C:\Perl\lib\File\Temp.pm line 19

打开你会看到的文件

代码语言:javascript
复制
require VMS::Stdio if $^O eq 'VMS';

更改文件不为只读,然后将#放在这一行,再次返回到perl2exe文件,然后它应该会消失。

票数 0
EN

Stack Overflow用户

发布于 2018-05-19 16:01:11

这个问题的读者可能感兴趣的是,除了VMS/Stdio.pm错误之外,我还收到了“无法定位the.pm”。它指向的perl代码中的一行是“使用't‘命令.”那是在一份双引号的打印声明中。显然,perl2exe寻找'use‘语句,不管它在我的代码中出现在哪里。修复方法是要么重新输入文本以删除单词“use”,要么将文本放在单引号中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26103100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档