我正在尝试创建一个由多个 tcl 源文件组成的 starkit,它可以在我的机器上毫无问题地使用wish
. 但是,在尝试对 tclkit 执行相同操作时,我从直接源自main.tcl
.
unknown or ambiguous item type "waveform"
while executing
"$c create waveform 0 0 -sound snd -height $v(waveh) -width $v(cWidth) -tags [list obj wave] -debug $::debug -fill $v(wavColor) -limit $v(waveScale)"
invoked from within
"if $v(showWave) {
$c create waveform 0 0 -sound snd -height $v(waveh) -width $v(cWidth) -tags [list obj wave] -debug $::debug -fill $v(wavColor) ..."
(procedure "Redraw" line 28)
invoked from within
"Redraw all"
(procedure "resetDisplay" line 21)
invoked from within
"resetDisplay"
(file "MYAPPLICATION.vfs/TOPLEVEL.tcl" line 591)
waveform
来自snack
图书馆,所以我调查了它。该库没有未解决的外部依赖关系,如果根本无法使用该库,则该错误会更早发生,因此我尝试了以下方法:
- 从源代码重新编译
snack
库 - 直接编译
snack
到 tclkit 运行时(而不是作为 vfs 中的库) - 再次添加
package require snack
到有问题的源文件中 - 使我的应用程序成为一个包,
lib
而不是在直接 vfs 目录中
以上都不起作用。我发现的唯一工作方法是通过替换将所有源文件合并为一个source
s. 因此,我怀疑这是某种竞争条件,但我既无法证明也无法调试它。
抱歉,如果我在这里遗漏了任何重要的东西(对 tcl/tk 来说很新)。非常感谢任何建议。首先十分感谢!:)