无法在Tcl包Snack中执行基本命令

时间:2014-11-26 14:23:02

标签: windows-7 package tcl

我正在尝试使用名为“Linger”的Tcl应用程序(由Doug Rohde开发)来创建阅读实验。我需要使用Snack软件包来记录主体重复阅读的内容。在应用程序中尝试脚本时,我收到了许多错误消息,都与此包有关。

所以,在Wish中我试图找出包是否正确加载。

package require snack

产量

couldn't load library "C:/Tcl/lib/tcl8.6/snack2.2/libsnack.dll"

首次运行时

package provide snack 2.2.10

然后

package require snack

它给了我

2.2.10

这是否意味着包已加载?

我试图通过运行Snack's tutorial中的一个基本命令来解决这个问题。

snack::sound s

应该创建一个名为s的Snack声音对象;然而,当我尝试时,希望给我

invalid command name "snack::sound"

所以现在我知道为什么我的Linger脚本不起作用,但我不知道如何解决问题。我非常感谢您的帮助或任何指出答案链接的人。

我在Windows 7(64位)上运行Tcl / Tk 8.6.3和零食2.2.10。在Mac OS 10.6和Linux上尝试过相同的操作;同样的结果。

2 个答案:

答案 0 :(得分:2)

问题是由于某种原因没有加载包的实现。唉,错误诊断:

couldn't load library "C:/Tcl/lib/tcl8.6/snack2.2/libsnack.dll"

不是特别有用。如果文件C:\Tcl\lib\tcl8.6\snack2.2\libsnack.dll存在(您可以在资源管理器中检查; Tcl更喜欢在内部使用Unix风格的目录名称分隔符)那么它最有可能是32位库与64位应用程序(或反之亦然)问题;在远程接近正常情况下,您无法将不匹配的库加载到正在运行的应用程序中。

不幸的是,似乎Snack是Tcl安装中最不可能缺少的软件包之一(例如,它不是ActiveTcl发行版的一部分)。您可以尝试从Snack site获取代码,但我认为可能需要32位版本的Tcl / Tk才能工作,现在我们默认在大多数平台上使用64位版本。我不知道为什么Snack不再作为ActiveTcl的一部分而建造。


做一个

package provide snack 2.2.10

不会帮助你。它只是告诉Tcl运行时关于包的谎言,但没有真正的实现,你将无法使用它。 (严格来说,这是一个包实现告诉包管理器它已经成功加载的方式。它应该只在正常情况下由包实现使用。)

答案 1 :(得分:0)

如果您要下载并安装WinTclTk零食将起作用。 WinTclTk已包含零食。所以你不必手动安装它。只需输入

即可

包裹需要点心

您将获得有关已包含的零食包的信息。

我在虚拟Windows XP(32位)上尝试过它。

我在Windows 7(64位)和Ubuntu(64位)上试用snack original site的零食软件但没有成功。