[英]Windows says 64-bit executable is "Unsupported 16-Bit Application"
[英]Flex in C produces Unsupported 16 bit Application while compiling on 64 bit Windows 7 Machine
我正在使用64位Windows 7操作系統。 我已按照以下說明從Sourceforge安裝了32位Flex和Bison: http : //www.surajgaikwad.com/2013/10/compile-lex-and-yacc-progs-on-windows.html
唯一的區別是我沒有使用dev-cpp,但是我正在使用mingw cpp,因為dev-cpp給了我一個錯誤。
現在,我編寫了一個詞法分析器,並執行以下命令:
a)當我使用以下命令使用flex對其進行編譯時,它將成功編譯:flex test.l
b)當我使用以下命令編譯由步驟(a)生成的lex.yy.c文件時,它也執行OK:cpp lex.yy.c
c)但是,當我嘗試使用以下命令將此輸出發送到可執行文件時:cpp lex.yy.c -o a.exe
此a.exe無法運行,並給我一個錯誤,其中指出:“此版本的E:... \\ src \\ a.exe與您正在運行的Windows版本不兼容。請檢查計算機的系統信息以查看是否需要該程序的x86(32位)或x64(64位)版本,然后與軟件發行商聯系。”
彈出窗口的標題顯示“不受支持的16位應用程序”
我的印象是64位窗口應該能夠執行任何32位或16位應用程序。 此外,令我感到困惑的是,為什么編譯器會生成16位應用程序。
我想請您分享您對此問題的可能原因或任何相同/相似的經歷的看法,以便我進一步調查以找出根本原因。
任何幫助,將不勝感激。 謝謝!
我的印象是64位窗口應該能夠執行任何32位或16位應用程序。
那是您的誤解。 根據KB896458 :
Windows的64位版本不支持16位組件,16位進程或16位應用程序。
您的cpp
編譯器顯然正在生成一個16位應用程序,而該64位Windows將無法運行。
我不確定您實際使用的是哪個編譯器,因為鏈接到的指令似乎需要gcc
作為編譯部分,而不是cpp
。
可能值得弄清楚您使用的是哪種模型和版本編譯器,例如cpp --help
, cpp -h
或cpp -?
。 這樣可以更輕松地找到為什么要獲得16位可執行文件。
從gcc參數中刪除“ -c”。 對我來說:D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.