Почему текст" эта программа не может быть запущена в режиме DOS " присутствует.dll файлы?

недавно я открыл .dll-файл, созданный Visual Studio 9 при компиляции собственного проекта DLL C++, и был удивлен, увидев текст" эта программа не может быть запущена в режиме DOS " в начале.

зачем этот текст .dll файлы?

3 ответов


dll очень похож на исполняемый файл с другим расширением. Текст, который вы видели, является частью "стандартного" исполняемого заголовка в windows. Он (был) используется, чтобы изящно прервать попытку запуска исполняемого файла windows из DOS.


в спецификации портативного исполняемого формата указано следующее:

заглушка MS-DOS является допустимым приложением, которое работает под MS-DOS. Это помещается в передней части EXE-изображения. Компоновщик помещает заглушку по умолчанию вот, что выдает сообщение "Эта программа не может быть запущена в DOS режим."когда изображение запускается в MS-DOS. Пользователь может указать другой заглушка с помощью параметра / stub компоновщика.

на месте 0x3c, пень файла смещение к подписи PE. Эта информация позволяет Windows правильно выполнить файл образа, хотя у него есть заглушка MS-DOS. Это смещение файла помещается на расположение 0x3c во время соединения.


Win32 программы, запущенные из режима DOS (т. е. один пользователь, без графики), печатают этот текст. Dll, вероятно, также печатают это сообщение, если вы пытаетесь использовать их без запуска Windows.