以下是我的规格:OS X Tiger Perl 5.8使用捆绑了ActiveTcl v8.5的Tkx
我已经使用PAR/pp成功创建了具有上述配置的独立应用程序,但它不是一个完全令人满意的解决方案:
是否有其他途径可以绕过这些问题?
如果您正在使用ActivePerl,它应该与Tcl和Tk的共享对象捆绑在一起.这些文件是Tcl.so和tkkit.so(Windows上的Tcl.dll和tkkit.dll).您将要配置pp以使用该-l选项将它们与您自包含的可执行文件捆绑在一起.例如(在Windows上):
-l C:/Perl/lib/auto/Tcl/tkkit.dll
-l C:/Perl/lib/auto/Tcl/Tcl.dll
Run Code Online (Sandbox Code Playgroud)
遗憾的是,PAR不会在正确的位置解压缩共享对象,以便Tkx应用程序找到它们.您可以$ENV{PERL_TCL_DL_PATH}在加载Tkx之前通过设置来解决这个问题.要创建一个可以使用或不使用PAR的应用程序,请使用BEGIN块来检测它在PAR下运行的时间:
use strict;
use warnings;
use File::Spec::Functions;
BEGIN {
if (exists $ENV{PAR_PROGNAME}) {
use Config ();
$ENV{PERL_TCL_DL_PATH} = catfile(
$ENV{PAR_TEMP},
'tkkit.' . $Config::Config{dlext},
);
}
}
use Tkx;
# remainder of script...
Run Code Online (Sandbox Code Playgroud)
pp有一个-g(或--gui)选项来构建没有控制台窗口的应用程序,但它只适用于Windows.我不知道是否有办法在OS X上隐藏控制台.
至于在Tcl/Tk窗口中使用默认菜单打开应用程序,我不知道.我怀疑那是因为您使用ActiveTcl安装而不是与ActivePerl捆绑在一起的共享对象.
| 归档时间: |
|
| 查看次数: |
1964 次 |
| 最近记录: |