【问题标题】:Cannot perform basic commands in Tcl package Snack无法在 Tcl 包 Snack 中执行基本命令
【发布时间】:2014-11-26 14:23:01
【问题描述】:

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

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

package require snack

产量

无法加载库“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的小吃声音对象;然而,当我尝试时,Wish 给了我

无效的命令名称“snack::sound”

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

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

【问题讨论】:

    标签: windows-7 package tcl


    【解决方案1】:

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

    无法加载库“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 运行时说谎,但如果没有真正的实现,您将无法使用它。 (严格来说,这是一个包实现告诉包管理器它已经成功加载的方式。它应该只在正常情况下由包实现使用。)

    【讨论】:

    • 非常感谢您的快速帮助!使用 32 位版本的 Tcl 运行应用程序就可以了。一定要在我的致谢章节中找到你的名字(如果你不介意的话)!
    【解决方案2】:

    如果你要下载并安装WinTclTksnack 就可以了。 WinTclTk 已经包含了零食。所以你不必手动安装它。只需输入

    包装需要零食

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多