我有一个库,并且使用 swig 生成了相同的 tcl 绑定。如果我原来的 lib dll 是 xyz.dll,那么生成的 dll 就是 xyz_tcl.dll。但是当我尝试加载 dll 时,它会显示“无效的命令名称“MZ””。谁能告诉我这可能是什么原因。
问问题
445 次
2 回答
4
几乎可以肯定是 DLL的MZ
前几个字节(它是文件格式的“幻数”)所以猜测你正在尝试做:
source xyz_tcl.dll
那是行不通的。它包含与 Tcl 集成的编译 C 代码,但不是 Tcl 脚本。相反,您需要执行以下操作:
load xyz_tcl.dll
当然,它应该被构建到一个包中(这是一个包含所需 DLL 和文件的目录pkgIndex.tcl
),然后你可以这样做:
package require xyz
(该pkgIndex.tcl
文件包含有关如何在必要时使用其他文件定义包的说明load
。source
)
于 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 回答