我现在遇到一个令人沮丧的问题与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 ...这可能是我的问题的解决方案。但它仍然是一个特殊的问题。
答案 0 :(得分:1)
至少对我来说,.tcl文件不可执行,所以需要在shell中执行......我需要这样做:
exec wish85.exe test.tcl