gpt4 book ai didi

c++ - 在 Visual Studio 中使用 lex 和 yacc 输出时出现链接错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:33 25 4
gpt4 key购买 nike

我正在使用这个 windows version flex (lex) 和 bison (yacc) 将我的查询编译器从 linux 移植到 Windows。输出文件 lex.yy.cy.tab.cy.tab.h 正在正确生成。但是,我收到以下链接错误。

Error 29 error LNK2001: unresolved external symbol _yylval G:\Project\lex.yy.obj QC
Error 30 error LNK1120: 1 unresolved externals G:\Project\QC.exe QC

我尝试将上述由 flex 和 yacc 的原始 linux 版本生成的文件复制到 Visual studio 项目文件夹中。但这也给出了相同的链接错误。

最佳答案

这可能是因为您在一个项目中将 C++ 和 C 文件混合在一起。因此,如果您将 y.tab.h 包含到 .cpp 文件中,请确保它具有 extern "C"{ ... } 围绕着它。像这样:

extern "C"
{
#include "y.tab.h"
}

更新:根据您的评论,我了解到 y.tab.c 现在是 y.tab.cc。这会导致链接时间错误。这可以通过将两个文件都制作为 C++(或 C)来解决。或者通过将 y.tab.h 中的 yylval 声明更改为

#ifdef __cplusplus
extern "C" YYSTYPE yylval;
#endif

关于c++ - 在 Visual Studio 中使用 lex 和 yacc 输出时出现链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com