我正在尝试在XP Windows机器中运行从命令提示符链接我的DLL文件的控制台C ++应用程序。最近我开始得到“这个程序无法在DOS模式下运行”。作为错误消息。据我所知,如果在纯MS-DOS环境中调用此exe,则所有DLL中的填充消息都要打印。那我为什么要在Windows CMD窗口中获取它呢?它告诉我我的一个DLL有问题吗?
此外,我在IM路径描述更改错误消息后立即观察到如下
< -------------- Screen Dump ----------------------------- - >
C:\ Program Files \ MYPROGRAMS \ APPLICATIONS> foo.exe 该程序无法在DOS模式下运行。
C:\ PROGRA〜1个\ MYPROG〜1个\ APPLICAT〜1>
< -------------- Screen Dump ------------------------------>
为什么路径文本会更改为Win95样式(因为缺少更好的短语)?是以某种方式将系统设置为某种兼容模式吗?
大多数Google搜索都表示仅在安装期间发生此错误(与我的方案不同)。这是链接 http://www.personalcopy.com/doserror.htm讨论了一个变体,但DOS窗口属性中不再出现复选框。
任何帮助和指示赞赏。
答案 0 :(得分:1)
首先用十六进制编辑器打开EXE,你要运行什么。打开后,你可以在启动时看到MZ签名吗......如果还有MZ以外,可能有,exe不是正确的表格.. ..此后,你可以继续前进..
答案 1 :(得分:0)
@Hans这是链接器命令(回答因为文本太大而无法发表评论)
/ OUT:“...... \ nt \ wint \ Release \ foo.exe”/ INCREMENTAL:NO / NOLOGO / MANIFEST /MANIFESTFILE:".\foo_cli\Release\foo.exe.intermediate.manifest“ / DEBUG /PDB:".......\nt\win32\Release/foo.pdb“/ SUBSYSTEM:CONSOLE / OPT:REF / OPT:ICF / LTCG / MACHINE:X86 / ERRORREPORT: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“