0

我有一个库,并且使用 swig 生成了相同的 tcl 绑定。如果我原来的 lib dll 是 xyz.dll,那么生成的 dll 就是 xyz_tcl.dll。但是当我尝试加载 dll 时,它会显示“无效的命令名称“MZ””。谁能告诉我这可能是什么原因。

4

2 回答 2

4

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

source xyz_tcl.dll

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

load xyz_tcl.dll

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

package require xyz

(该pkgIndex.tcl文件包含有关如何在必要时使用其他文件定义包的说明loadsource

于 2012-04-26T08:02:49.273 回答
2

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

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

于 2012-04-26T06:56:32.523 回答