2

我尝试过的(在 Windows 上运行 Tcl 和 Tk 8.6.0):

load D:/toot/bar/em.dll
load "D:/toot/bar/em.dll"
load D://toot//bar//em.dll
load "D://toot//bar//em.dll"
load D:\toot\bar\em.dll
load "D:\toot\bar\em.dll"
load D:\\toot\\bar\\em.dll
load "D:\\toot\\bar\\em.dll"

所有这些都返回以下两个错误之一:

无法加载库 [我在“加载”之后放置的内容]:无效参数

无法加载库[我在“加载”之后放置的内容,渲染]:在库路径中找不到此库或依赖库

4

2 回答 2

1

假设file exists D:/toot/bar/em.dll返回 true aload D:/toot/bar/em.dll应该可以工作。但是,听起来您遇到了库所依赖的事物(即其他 DLL)的问题。

这是 Windows 上的一个普遍问题,在 Stack Overflow 上的其他地方也有人问过;那里的答案与这个问题有关。您还应该知道,如果 DLL 已链接到特定版本的 Tcl DLL(建议在 Windows 上用于 Tcl 扩展),那么您需要安装与链接时相同版本的 Tcl。支持存根的扩展根本没有这个问题(尽管它们仍然会遇到其他所需库不存在的问题)。

遗憾的是,该load命令没有告诉您其错误消息中缺少什么 DLL,但 IIRC 底层 OS API 也没有报告它。你被困在使用外部工具来诊断这些事情......</p>


a不要担心反斜杠/正斜杠问题;Tcl 为您处理这些。

于 2013-08-11T15:20:49.597 回答
1

我也有这个问题,无法加载库“ChariotExt”:参数无效。

并通过将 tcl 版本 x64 更改为 x86 来解决它。

于 2017-06-01T03:05:59.360 回答