我将将用于unix的C项目移植到Windows中。到目前为止,我可以使它编译但不能编译。我遇到的问题是,在头文件中声明的某些函数在yacc文件中定义。所以我遇到以下错误:
error LNK2001: unresolved external symbol function_name
我在项目的源目录中添加了.y和.l文件。我认为我无法将yacc文件移植到Windows版本中,或者我做了一些愚蠢的事情。你请让我知道
编辑
我尝试使用
.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
兼容。所以请他给我,我该如何解决这个问题?提前致谢。
最佳答案
您需要为.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无法正确获得依赖关系,因此当您在解析器或词法分析器文件中进行某些更改时,您需要手动重建项目。
关于visual-studio - yacc和野牛在视觉工作室,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6563378/