Невозможно запустить DLL, связанную с C ++ exe. «Эту программу нельзя запустить в режиме DOS». ошибка - PullRequest
0 голосов
/ 23 апреля 2010

Я пытаюсь запустить консольное приложение C ++, связывающее мои DLL-файлы, из командной строки на компьютере с Windows XP. Недавно я начал получать «Эта программа не может быть запущена в режиме DOS». как сообщение об ошибке. Как я понимаю, это сообщение-заполнитель во всех DLL-файлах для печати, если этот exe-файл вызывался в чистой среде MS-DOS. Так почему я получаю это в окне Windows CMD? Это говорит мне, что у одной из моих DLL есть проблема?

Также я наблюдал immeditaly после сообщения об ошибке описание пути Windows меняется следующим образом

<-------------- Дамп экрана ------------------------------ >

C: \ Program Files \ MYPROGRAMS \ APPLICATIONS> foo.exe Эту программу нельзя запустить в режиме DOS.

C: \ PROGRA ~ 1 \ MyProg ~ 1 \ APPLICAT ~ 1>
<-------------- Дамп экрана ------------------------------>

Почему текст пути меняется на стиль Win95 (из-за отсутствия лучшей фразы)? Это как-то переводит систему в какой-то режим совместимости?

Большая часть поиска в Google указывает на то, что эта ошибка возникает только во время установки (в отличие от моего сценария). Эта ссылка http://www.personalcopy.com/doserror.htm говорит о варианте, но флажки больше не присутствуют в свойствах окна DOS.

Любая помощь и указатели приветствуются.

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

Сначала откройте EXE с помощью шестнадцатеричного редактора, что вы хотите запустить. После открытия вы можете увидеть подпись MZ при запуске ... если есть иная, чем MZ, может быть, Exe не является правильной формой ....после этого вы можете двигаться дальше ..

0 голосов
/ 26 апреля 2010

@ Hans Это команда компоновщика (отвечает, потому что текст слишком велик для комментариев)

/ OUT: "...... \ nt \ win32 \ Release \ foo.exe" / ОБЯЗАТЕЛЬНО: НЕТ / NOLOGO / МАНИФЕСТ /MANIFESTFILE:".\foo_cli\Release\foo.exe.intermediate.manifest " / DEBUG /PDB:".......\nt\win32\Release/foo.pdb "/ SUBSYSTEM: CONSOLE / OPT: REF / OPT: ICF / LTCG / MACHINE: X86 / ОШИБКА: PROMPT kernel32.lib user32 .lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib "...... \ nt \ win32 \ release \ foo_other_tests.lib" "...... \ nt \ win32 \ release \ foo.lib" "...... \ nt \ win32 \ release \ foo_tests.lib" "...... \ nt \ win32 \ release \ foo_logger.lib "" ...... \ nt \ win32 \ release \ ext1.lib "" ...... \ nt \ win32 \ release \ ext2.lib "

...