为什么我在愿望控制台上加载 dll 时会得到"invalid command name " MZ " "?



我有一个库,我使用 swig 为它生成了 tcl 绑定。这样生成的 dll 是xyz_tcl.dll如果我的原始库 dll 我们 xyz.dll。但是当我尝试加载 dll 时,它说"无效的命令名称"MZ"。谁能告诉我可能是什么原因。

MZ几乎

可以肯定是DLL的前几个字节(它是文件格式的"幻数"),所以猜测你正在尝试做:

source xyz_tcl.dll

那行不通。它包含与Tcl集成的编译C代码,但不包含Tcl脚本。相反,您需要执行以下操作:

load xyz_tcl.dll

当然,它应该构建到一个包中(这是一个包含所需 DLL 和文件pkgIndex.tcl的目录),然后让你做这样的事情:

package require xyz

pkgIndex.tcl文件包含有关如何使用其他文件定义包的说明,根据需要通过loadsource

我认为某些东西(tcl?)正在尝试将DLL作为脚本执行 - Windows可执行文件的前两个字节是"M"和"Z"。

由于历史原因,每个 Win32 可执行文件在实际的 Win32 PE 标头之前都有一个小的 16 位 MS-DOS 标头,并且 16 位标头的签名字节为"MZ"。

最新更新