编译课上面,老师要求用flex把 .l 文件生成 .c 文件,然后和库文件libfl.lib放到同一个vc6工程里面生成一个exe文件
可是现在我用的win8系统,对vc6不支持。。
所以看了一下在vs2012下生成exe的方法
首先,把生成的.c文件放到工程里面
源文件 添加 现有项 找到 libfl.lib 加进去
在c代码开头加上
#pragma comment(lib, "libfl.lib")
#pragma comment(linker,
"/NODEFAULTLIB:LIBC.lib")
另一种方法:
修改项目属性:属性->链接器->输入下:附加依赖项加入libfl.lib的路径;忽略特定库加入:LIBC.lib。
然后,在c代码里面ctrl + F找一下fileno,改成_fileno,注意加了个下划线
ctrl + F5可以跑了。。
另外
附上整个编译过程
(一) 目录介绍
在本实验目录中,包括两个子目录。
1、子目录 flex
它包含了 flex.exe, flex.hlp, libfl.lib 三个文件,另外还有一个例子文件 example.l 及该例子生成的
lex.yy.c。
2、子目录 lex_yy
这个目录是为 lex.yy.c 建立的一个项目(使用 VC6)。它包含有 lex.yy.c, libfl.lib (拷贝自目录
flex),以及相关的项目文件。在debug 子目录中是已经生成的 词法分析器 lex.yy.exe, 利用它可以进行词法分析。
(二)实验示范
1、编写 lex 程序,如 example.l 文件所示
2、调用 flex 以生成 lex.yy.c, DOS命令格式: flex <
example.l
3、新建一个目录(如 lex_yy), 把lex.yy.c 及 libfl.lib
拷贝到该目录下。
4、用VC6打开lex.yy.c,并生成一个新项目。
5、编译并链接libfl.lib, 得到词法分析器
debug/ley.yy.exe。
6、验证词法分析器的功能:
1)编写一输入文件(如lex_yy/debug/12.txt)
2) 调用
lex.yy.exe(DOS 命令格式 lex.yy.exe < 12.txt )
3) 观察输出结果是否与预想的相符。
原文:http://www.cnblogs.com/phoenix-route/p/3641755.html