为什么.dll文件中存在“此程序无法在DOS模式下运行”文本?

时间:2010-04-05 08:41:06

标签: windows visual-c++

最近我在编译本机C ++ DLL项目的同时打开了由Visual Studio 9生成的.dll文件,并且惊讶地看到“这个程序无法在DOS模式下运行”文本开头附近。

为什么在.dll文件中包含此文本?

3 个答案:

答案 0 :(得分:8)

dll非常类似于具有不同扩展名的可执行文件。您看到的文本是Windows上“标准”可执行文件头的一部分。它曾被用来优雅地中止从DOS运行Windows可执行文件的尝试。

答案 1 :(得分:3)

可移植可执行文件格式规范声明如下:

  

MS-DOS存根是一个在MS-DOS下运行的有效应用程序。它是   放在EXE图像的前面。链接器放置默认存根   这里打印出消息“这个程序不能在DOS下运行   模式。“当图像在MS-DOS中运行时。用户可以指定一个   使用/ STUB链接器选项使用不同的存根。

     

在位置0x3c处,存根具有到PE签名的文件偏移量。   此信息使Windows能够正确执行图像文件,   即使它有一个MS-DOS存根。此文件偏移位于   链接期间的位置0x3c。

答案 2 :(得分:1)

Win32程序从DOS模式运行(即单用户,无图形)打印该文本。如果你尝试在没有运行Windows的情况下使用它们,DLL也可能会打印该消息。