wxPerl和PAR::Packer和缺少的依赖项
我的应用程序是用wxPerl编写的,我用wxPerl和PAR::Packer和缺少的依赖项,perl,wxperl,Perl,Wxperl,我的应用程序是用wxPerl编写的,我用PAR::Packer编写了一个可执行文件。它在我的机器(macOS和Windows)上运行良好,但在未安装Perl/wxPerl的机器上运行不好;事实上,如果在运行可执行文件之前将保存Perl安装的目录的名称更改为perl5X或StrawberryX,则它在我的机器上也不起作用 在macOS上,我可以从终端获取错误消息: Can't load '/var/folders/[...]/ca54e36a.bundle' for module Wx: dlo
PAR::Packer
编写了一个可执行文件。它在我的机器(macOS和Windows)上运行良好,但在未安装Perl/wxPerl的机器上运行不好;事实上,如果在运行可执行文件之前将保存Perl安装的目录的名称更改为perl5X
或StrawberryX
,则它在我的机器上也不起作用
在macOS上,我可以从终端获取错误消息:
Can't load '/var/folders/[...]/ca54e36a.bundle' for module Wx:
dlopen(/var/folders/[...]/ca54e36a.bundle,
1): Library not loaded: /[...]/Alien/wxWidgets/osx_cocoa_3_0_2_uni/lib/libwx_osx_cocoau_core-3.0.0.2.0.dylib
Referenced from: /var/folders/[...]/libwx_osx_cocoau_adv-3.0.dylib
Reason: image not found at <embedded>/DynaLoader.pm line 197.
at <embedded>/PAR/Heavy.pm line 140.
运行可执行文件时,-a
中包含的数据文件会被解压到正确的位置,因此它可以工作到目前为止。但后来它停止了
那么,我错过了什么
--编辑1
为清晰起见进行了编辑
--编辑2
我提供了一个最小的(非)工作示例:
use warnings;
use strict;
package MyFrame;
use Wx::Perl::Packager;
use Wx;
use base 'Wx::Frame';
sub new {
my $class = shift;
my $self
= $class->SUPER::new( undef, -1, 'Test', [ -1, -1 ], [ 250, 150 ], );
return $self;
}
1;
package MyApp;
use base 'Wx::App';
sub OnInit {
my ($self) = @_;
my $frame = MyFrame->new();
$frame->Show();
}
1;
package main;
MyApp->new->MainLoop;
然后我像这样运行pp
:
#!/bin/bash
pp -x -c -o minimal.app \
-l /Users/Patrik/perl5/perlbrew/perls/perl-5.30.0/lib/site_perl/5.30.0/darwin-2level/Alien/wxWidgets/osx_cocoa_3_0_2_uni/lib/libwx_osx_cocoau_core-3.0.0.2.0.dylib \
minimal.pl
但是在“隐藏”Perl安装并运行我得到的应用程序之后
...
Library not loaded: /Users/Patrik/perl5/perlbrew/perls/perl-5.30.0/lib/site_perl/5.30.0/darwin-2level/Alien/wxWidgets/osx_cocoa_3_0_2_uni/lib/libwx_osx_cocoau_core-3.0.0.2.0.dylib
...
“如果我更改保存Perl安装的目录的名称,它在我的机器上也不起作用”如何/何时更改目录的名称?我在生成可执行文件后更改名称,然后再运行它。对不起,有点不清楚。关键是,可执行文件不能再引用Perl安装。对于Windows,您可以在以下位置查看我的答案:@Patrik Maybe try ask at GitHub?我在Windows上尝试了您的示例代码,并附带了一个最小的
wxpar-o test.exe test.pl
。一切似乎都很好——而且perl树对可执行文件是隐藏的。
...
Library not loaded: /Users/Patrik/perl5/perlbrew/perls/perl-5.30.0/lib/site_perl/5.30.0/darwin-2level/Alien/wxWidgets/osx_cocoa_3_0_2_uni/lib/libwx_osx_cocoau_core-3.0.0.2.0.dylib
...