如何在Tcl中加载dll?

如何在Tcl中加载dll?,dll,tcl,tk,system32,Dll,Tcl,Tk,System32,我的尝试(在Windows上运行Tcl和Tk 8.6.0): 所有这些都返回以下两个错误之一: 无法加载库[我在“加载”后放置的内容]:参数无效 无法加载库[我在“加载”后放置的内容,呈现]:在库路径中找不到此库或从属库 假设文件存在D:/toot/bar/em.dll返回truea,加载D:/toot/bar/em.dll应该可以工作。但是,听起来您对库所依赖的东西(即其他DLL)有问题 这是Windows上的一个普遍问题,已经解决;那里的答案与这个问题有关。您还应该知道,如果DLL是针对特定

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

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

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

无法加载库[我在“加载”后放置的内容,呈现]:在库路径中找不到此库或从属库


假设
文件存在D:/toot/bar/em.dll
返回truea,
加载D:/toot/bar/em.dll
应该可以工作。但是,听起来您对库所依赖的东西(即其他DLL)有问题

这是Windows上的一个普遍问题,已经解决;那里的答案与这个问题有关。您还应该知道,如果DLL是针对特定版本的Tcl DLL链接的(不建议在Windows上使用Tcl扩展),那么您需要安装与链接时所针对的Tcl版本相同的Tcl。启用存根的扩展根本没有这个问题(尽管它们在缺少其他必需库的情况下仍然会遇到问题)

令人遗憾的是,
load
命令没有告诉您错误消息中缺少了什么DLL,但是底层OS API IIRC也没有报告它。你必须使用外部工具来诊断这些事情



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

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


并通过将tcl版本x64更改为x86解决了此问题。

1。这个dll是tcl扩展吗?2.如果是,路径中是否存在所有必需的依赖项?1。是的,2。path是指我的
path
系统环境变量吗?好的,这似乎不是加载语法问题;思考版本控制问题。仅供参考:我正在与
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"