我正在尝试使用名为“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上尝试过相同的操作;同样的结果。
答案 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的零食软件但没有成功。