這裏是我的規格: OS X Tiger的 的Perl 5.8 使用TKX捆綁ActiveTcl V8.5試圖創建一個使用TKX(Tcl/Tk)一個Perl腳本,一個獨立的應用程序
我已經成功創建使用PAR/PP上述配置一個獨立的應用程序,但它不是一個完全令人滿意的解決方案:
- 仍然需要的Tcl/Tk要安裝
- 在一個Tcl/Tk的窗口打開了一個默認的菜單
- 打開終端每次我運行應用程序
是否有另一條路線可以繞過這些問題?
這裏是我的規格: OS X Tiger的 的Perl 5.8 使用TKX捆綁ActiveTcl V8.5試圖創建一個使用TKX(Tcl/Tk)一個Perl腳本,一個獨立的應用程序
我已經成功創建使用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
在TKX應用正確的地方不幸的是PAR不會解包共享對象找到他們。在加載Tkx之前,您可以通過設置$ENV{PERL_TCL_DL_PATH}
來解決這個問題。爲了使一個應用程序,可有或沒有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...
pp
有-g
(或--gui
)選項來構建應用程序沒有控制檯窗口,但它只適用於Windows。我不知道是否有辦法在OS X上隱藏控制檯。
至於應用程序在帶有默認菜單的Tcl/Tk窗口中打開,我不知道。我懷疑這是因爲你正在使用ActiveTcl安裝,而不是與ActivePerl捆綁在一起的共享對象。
ActiveState Perl Dev Kit具有將Tkx腳本綁定爲正確的OS X應用程序的額外知識。你可以試試http://www.activestate.com/perl-dev-kit。
控制檯彈出與Tk中的啓發式測試有關,試圖確定您是否在交互式運行(並且顯然在您的情況下出現錯誤)。你總是可以抑制其顯示器:
Tkx::catch("console hide");
在OS X上我還建議:
Tkx::set("::tk::mac::useThemedToplevel" => 1);
我讀到有關-g開關了。在這一點上,我認爲我最好的選擇是尋找其他選擇。謝謝。 – 2009-08-16 23:55:15