2010-04-23 22 views
0

我試圖運行一個控制檯C++應用程序鏈接與我的DLL文件從命令提示符在XP的Windows機器。最近我開始變得「​​這個程序不能在DOS模式下運行」。作爲錯誤消息。據我瞭解,如果在純MS-DOS環境中調用此exe文件,這是所有DLL中的填充消息。那麼爲什麼我在Windows CMD窗口中獲得這個?它是否告訴我,我的一個DLL有問題?無法運行DLL鏈接的C++ exe。 「這個程序不能在DOS模式下運行。」錯誤

此外,我的錯誤消息後immeditaly觀察到的視窗的路徑描繪如下變化

< --------------屏幕轉儲---------- -------------------->

C:\ Program Files \ MYPROGRAMS \ APPLICATIONS> foo.exe 此程序無法在DOS模式下運行。

C:\ PROGRA〜1 \ MYPROG〜1 \ APPLICAT〜1>
< -------------- Screen Dump ------------ ------------------>

爲什麼路徑文本更改爲Win95樣式(因爲想要更好的短語)?它以某種方式將系統設置爲某種兼容模式?

大多數谷歌搜索表明只有在安裝過程中才會出現此錯誤(與我的情況不同)。這個鏈接 http://www.personalcopy.com/doserror.htm談論變體,但複選框不再出現在DOS窗口屬性中。

任何幫助和指針讚賞。

+0

發佈您使用的連接器命令行。 – 2010-04-23 09:45:48

+0

這是在X86平臺中。 – user88595 2010-04-23 10:02:11

回答

1

首先用十六進制編輯器打開EXE,你想運行什麼。打開後,你可以在開始時看到MZ簽名...如果除了MZ以外,可能有,Exe不是正確的形式。 ..此後,你可以移動下一步..

+0

我會接受這個答案,即使這對我沒有幫助,但似乎是在這些條件下采取的正確方法。 – user88595 2010-06-18 06:36:13

0

@Hans這是連接器的命令(接聽因爲文字是徵求意見太大)

/OUT:"......\nt\win32\Release\foo.exe」 /增量: 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「

+0

好的......我試着在exe文件上運行dumpbin,它顯示 「錯誤:至少有一個文件不是32位或64位Windows模塊。」根據http://stackoverflow.com/questions/1320894/why-isnt-cl-exe-producing-a-valid-windows-module這可能是在其中一個庫中的問題?進一步看...... – user88595 2010-04-26 12:39:44

+0

好的..這個問題是由於建設過程中的其他問題而解決的。要回答這個問題,「這個程序不能在DOS模式下運行」。似乎打印如果Windows命令提示符無法識別該exe文件,並不一定是由於任何特定的DOS或Windows簽名。 – user88595 2010-06-18 06:35:24