我使用的是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- bit)版本的程序,然后联系软件发行商。“
弹出窗口的标题显示“不支持的16位应用程序”
我的印象是64位窗口应该能够执行任何32位或16位应用程序。此外,我很困惑,为什么编译器生成16位应用程序。
我可以请求您分享您对此问题的可能原因或任何相同/类似经历的意见,以便我可以进一步调查以找出根本原因。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
我的印象是64位窗口应该能够执行任何32位或16位应用程序。
这是你的误解。根据{{3}}:
64位版本的Windows不支持16位组件,16位进程或16位应用程序。
您的cpp
编译器显然正在生成一个16位应用程序,64位Windows无法运行。
我不完全确定您实际使用的是哪种编译器,因为您链接到的指令似乎需要gcc
用于编译部分,而不是cpp
。
可能值得尝试找出您正在使用的模型和版本编译器,例如使用cpp --help
,cpp -h
或cpp -?
。这样可以更轻松地跟踪为什么您获得的是16位可执行文件。
答案 1 :(得分:-1)
从gcc参数中删除“-c”。对我来说工作:D