Hallo, alle,
ich weiß, das ist ein altes Problem. Aber ich habe die letzten Tage auch damit rumgekämpft und eine - wie ich finde - recht ordentliche Lösung gefunden, die ich mit euch teilen möchte. Vlt. findet es ja der ein oder andere hilfreich.
Das Problem ist, dass wir die Shell-Umgebungsvariable $ENV{TCL_Library} ändern müssen, was nicht ganz einfach ist, weil der Kindprozess (das Perlskript) nicht ohne Weiteres die Umgebungsvariablen des Elternprozesses ändern kann.
Meine Lösung ist nun folgender BEGIN Block:
BEGIN {
if ($ENV{PAR_TEMP} && $ENV{TCL_Library} ne "$ENV{PAR_TEMP}/inc/lib/tcl8.6") {
print "Starting a Tcl::Tk PAR-exe file\n";
print "We need to set shell environment variables first \n";
$ENV{TCL_Library} = "$ENV{PAR_TEMP}/inc/lib/tcl8.6";
# I don't know whether this is really necessary?
$ENV{TK_Library} = "$ENV{PAR_TEMP}/inc/lib/tcl8.6";
system($0);
exit();
}
}
Das Perl Skript muss dann mit folgendem Befehl gepackt werden:
pp -l "C:/Tcl/bin/tcl86.dll" -l "c:/Tcl/bin/tk86.dll" -l "c:/Tcl/bin/zlib1.dll" -a "C:/Tcl;./" -o tktest.exe ./tktest.pl.
Wichtig ist dass der Ordner "C:/Tcl", in "./" umbenannt werden muss. Vor allem der Punkt vor dem "/" ist wichtig, keine Ahnung warum :-)
Viele liebe Grüße,
Max
Last edited: 2018-06-02 20:46:58 +0200 (CEST)