如何在Tcl中加载DLL?

时间:2013-08-11 12:40:06

标签: dll tcl tk system32

我尝试过(在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"

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

  

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

     

无法加载库[我在'加载'之后放置,渲染]:在库路径中找不到此库或从属库

2 个答案:

答案 0 :(得分:0)

假设file exists D:/toot/bar/em.dll返回true a load D:/toot/bar/em.dll应该有效。但是,听起来你已经遇到了库依赖的东西(即其他DLL)的问题。

这是Windows上的一般问题asked elsewhere on Stack Overflow;答案与这个问题有关。您还应该知道,如果DLL已经链接到特定版本的Tcl DLL(在Windows上推荐用于Tcl扩展),那么您需要安装相同版本的Tcl联系在一起。启用S​​tub的扩展根本没有这个问题(尽管它们仍然可能遇到其他所需库不存在的问题)。

遗憾的是load命令没有告诉你错误消息中缺少什么DLL,但是IIRC底层OS API也没有报告它。你很难使用外部工具来诊断这些东西......


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

答案 1 :(得分:0)

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

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