我打算将用于unix的C项目移植到windows中。到目前为止,我可以编译但不能编译。我得到的问题是,在头文件中声明的一些函数是在yacc文件中定义的。所以我得到以下错误:
error LNK2001: unresolved external symbol function_name
我加入.Y和.L文件在project.I的源目录觉得我不能端口YACC文件到Windows版本或我做的事情stupid.I搜索它的网络,但不能得到正确教程它。请你告诉我
修改
我尝试使用.l
将 .yy.c
文件更改为flex.exe
文件。以下是命令
c:\> flex.exe name.l
假设flex.exe和name.l都在C;>
中。我将所有这些文件 .l .y(previously present for parsing in unix system) .yy.c(corrsonding yacc file for windows)
加载到以前现有项目的解决方案中。编译完成后,我得到以下内容
Can't read the header file parserheaderfile.h
这是头文件,需要由unix中的 bison
生成
系统。所以我认为我无法使 bison
与windows
兼容。所以请他帮我,我该如何解决这个问题?
提前致谢。
答案 0 :(得分:7)
您需要为.y和.l文件添加自定义构建规则。为此,您需要
flex -olexer.c lexer.l
lexer.c
parser.y parser.c
bison -oparser.c parser.y
parser.c parser.h
此外,您还需要在系统搜索路径中包含flex.exe,bison.exe和m4.exe。另一个缺点是VS没有正确的依赖关系,因此当您在解析器或词法分析器文件中更改某些内容时,您需要手动重建项目。