0

次のコマンドを使用して、iwidgets と img パッケージを含む kbskit を構築しようとしています。

./kbs.tcl -builddir=85 -r -mk-bi -bi="itcl3.4 itk3.4 iwidgets4.0.2 img1.4.1" install kbskit8.5 

cp 85/bin/kbsmk8.5-bi kbsmk8.5-bi-run 

ls sim.vfs 
main.tcl img1.jpg 

./kbsmk8.5-bi sdx.kit wrap sim -runtime kbsmk8.5-bi-run 

ls 
kbsmk8.5-bi kbsmk8.5-bi-run sdx.kit sim.vfs sim 

./sim 
couldnt open "img1.jpg": no such file or directory 
    while executing 
"image create photo sim_img -file "img1.jpg"" 
    (file "/home/user1/sim/main.tcl" line 10) 

ここに img1.jpg ファイルが見つからないのはなぜですか??

ファイルが「sim」実行可能ファイル内にあるかどうかを確認するためにアンラップを試みましたが、実際に存在します!!

cp sim /tmp 
cd /tmp
./tclkit sdx.kit unwrap sim
ls sim.vfs 
boot.tcl main.tcl img1.jpg boot.tcl tclkit.ico lib 
ls sim.vfs/lib/ 
img1.4.1 itk3.4 tcl8 thread2.6.7 vfs1.4.2 
itcl3.4  iwidgets4.0.2  tcl8.5  tk8.5 

1)上記の動作を理解するために誰か助けてもらえますか?

2) suse 32bit で kbskit をビルドしています。ubuntu 32/64 ビットで実行可能ファイルを使用する必要がある場合、ubuntu で別の実行可能ファイルをビルドする必要がありますか??

4

1 に答える 1

1

現在のディレクトリimg1.jpgからファイルをロードしようとしています。これは通常、スクリプト/キットを開始するディレクトリです (たとえば、から開始した場合、現在のディレクトリは になります)。/use/bin/yourkit/home/user/home/user

解決策は、スクリプトへの相対パスを使用することです。

image create photo sim_img -file [file join [file dirname [info script]] img1.jpg]

これは、ファイルをソースしている間のみ機能します。結果を変数に保存するか、キットのトップディレクトリを指す変数をinfo script使用することができます。::starkit::topdir

image create photo sim_img -file [file join $::starkit::topdir img1.jpg]

期待どおりに動作するはずです。

于 2013-09-16T09:22:51.857 に答える