为什么我在愿望控制台上加载一个DLL时收到“无效命令名称”MZ“”?

时间:2012-04-26 06:48:06

标签: c++ dll tcl swig

我有一个库,我使用swig生成了相同的tcl绑定。如果我的原始lib dll us xyz.dll,那么生成的dll是xyz_tcl.dll。但是当我尝试加载dll时,它表示“无效命令名称”MZ“”。任何人都可以告诉我它可能是什么原因。

2 个答案:

答案 0 :(得分:4)

MZ几乎可以肯定是DLL的前几个字节(它是文件格式的“神奇数字”),所以我猜你试图这样做:

source xyz_tcl.dll

那不行。它包含与Tcl集成的已编译C代码,但不包含Tcl脚本。相反,你需要这样做:

load xyz_tcl.dll

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

package require xyz

pkgIndex.tcl文件包含有关如何使用其他文件定义程序包的说明,必要时通过loadsource。)

答案 1 :(得分:2)

我认为某事(tcl?)试图将DLL作为脚本执行 - Windows可执行文件的前两个字节是'M'和'Z'。

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