簡體   English   中英

在64位Windows 7計算機上編譯時,C語言中的Flex會生成不受支持的16位應用程序

[英]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 --helpcpp -hcpp -? 這樣可以更輕松地找到為什么要獲得16位可執行文件。

從gcc參數中刪除“ -c”。 對我來說:D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM