' exec'来自TclApp包装的应用程序的tcl文件

时间:2015-01-26 18:52:20

标签: tcl exec tk

我现在遇到一个令人沮丧的问题与exec。我试图做的就是从我用TclApp包装的程序中执行一个tcl文件,我不断得到一个"没有这样的文件或目录"错误。

我在这里找到了这些信息:https://community.activestate.com/faq/correctly-using-source-an然后跟着它到了点,但无济于事。这是一些演示代码:

主文件:我将包装版本命名为TestClient.exe

package require Tk;

proc main {} {

set ::base [file dirname [info script]];
set file_to_exec [file join $::base "test.tcl"];
exec $file_to_exec;

}
main 

test.tcl:

tk_messageBox -type ok -message "It Works!";

此代码总是会出现错误:

couldn't execute "C:\Dev\TestClient.exe\lib\application\test": no such file or directory

但是如果我尝试source $file_to_exec;或任何其他文件访问变体(例如使用open命令来读取或写入文件),代码就能完美运行。如果我想exec它,TclApp特别找不到该文件。有什么理由吗?我怎样才能让它发挥作用?我编写的程序相当大,它基于能够执行一些tcl文件,这些文件在未包装时有效。但现在我去包装并遇到这个问题;

提前致谢!

**** **** UPDATE

如果我将其他tcl文件分别包装在TclApp中,

exec将起作用。例如,如果我将test.tcl包装并使其成为Test.exe,我可以运行TestClient.exe并执行Test.exe ...这可能是我的问题的解决方案。但它仍然是一个特殊的问题。

1 个答案:

答案 0 :(得分:1)

至少对我来说,.tcl文件不可执行,所以需要在shell中执行......我需要这样做:

exec wish85.exe test.tcl