2

我使用适用于 Windows x64 的 ActiveStates TCL 版本 8.6.0.0。在我调用的脚本中:

package require tcom

Tcom 包含在安装中,但我收到以下错误:

couldn't load libary "C:/TCL/lib/tcom/tcom.dll": Invalid argument while executing
"load C:/TCL/lib/tcom/tcom.dll"
("package ifneeded tcom 3.9" script)
invoked from within
"package require tcom"

有谁明白实际上缺少什么?C:/TCL/lib/tcom/tcom.dll 安装在我的系统上,那么“无效参数”是什么?

4

1 回答 1

3

这似乎是一个 32 位/64 位问题。您不能在同一进程中混合不同的位大小†</sup>,并且您很可能已经安装了 ActiveTcl 8.6.0.0 的 64 位构建,因为相信构建的大小和系统架构是匹配的好主意。唉,事实并非如此。用于 64 位 Windows 的 ActiveTcl 8.6.0.0,出于商业原因‡</sup>,需要额外的产品密钥来访问其 64 位构建的外部包。但是无论如何您已经安装了该软件包(可能来自以前安装的 ActiveTcl?),这似乎是一个 32 位构建。

使用错误大小的二进制库构建的误导性错误是不幸的(一个相对较小的错误源于 Windows 和 POSIX 之间的细微差异以及 Tcl 如何处理两者之间的映射),但我敢打赌就是这样。

最简单的解决方法是:

  1. 卸载所有已安装的 ActiveTcl 副本,然后
  2. 确保您的C:\Tcl目录确实被删除,然后
  3. 安装 ActiveTcl 8.6.0.0 的32 位版本(在基于 Win64 的系统上运行良好,如 64 位 Windows 7 和 Windows 8)。一旦你这样做了,你
  4. 用于teacup update安装全套软件包,您应该可以让 Tcom 正常工作。

†</sup>除了在 ARM 上有额外的技巧,这里不适用。
‡</sup>我不会试图为他们辩护;这是他们的决定,不是我的。

于 2013-05-31T08:12:08.390 回答