antlr4 c+的未定义引用问题+;目标 我正在攻读一个编译器设计课程,我正在尝试用C++目标学习ANTLR4。p>

antlr4 c+的未定义引用问题+;目标 我正在攻读一个编译器设计课程,我正在尝试用C++目标学习ANTLR4。p>,c++,g++,antlr4,C++,G++,Antlr4,嗯,这就是我所经历的: 我把语法写在一个名为“ArrayInit.g4”的文件中 使用ANTLR4工具和命令“ANTLR4-Dlanguage=Cpp-o build”编译了它,并在“build/”目录中获得了一组文件,在其中我还添加了一个简单文件,其中包含主函数int main(){return 0;} < p>下载C++运行时并将其放入目录“运行时/” 在此阶段,我遇到了问题,无法使用命令“g++-std=c++11-I../runtime-o exec*.cpp”编译.cpp文件,并收到

嗯,这就是我所经历的:

  • 我把语法写在一个名为“ArrayInit.g4”的文件中

  • 使用ANTLR4工具和命令“ANTLR4-Dlanguage=Cpp-o build”编译了它,并在“build/”目录中获得了一组文件,在其中我还添加了一个简单文件,其中包含主函数
    int main(){return 0;}

  • < p>下载C++运行时并将其放入目录“运行时/”

  • 在此阶段,我遇到了问题,无法使用命令“g++-std=c++11-I../runtime-o exec*.cpp”编译.cpp文件,并收到以下错误消息:

  • /tmp/cc8VNGfx.o:在函数“ArrayInitLexer::ArrayInitLexer(antlr4::CharStream*)”中:
    ArrayInitLexer.cpp:(.text+0xc8):对“antlr4::Lexer::Lexer(antl4::CharStream*)”的未定义引用
    
    ArrayInitLexer .CPP:(.text +0x116):未定义的引用“ANTLR4::ATN::LUPATATNMONS::LexerATNSimulator(ANTLR4::Loxer-*,ANTLR4::ATN::ATN const,STD::向量在C++目标部分或直接从

    < p>您的编译命令看起来不太正确.

    请注意,g++使用大写的
    -L
    开关来指定查找库的位置,使用小写的
    -L
    来指定要链接的库的文件名,不包括
    lib
    前缀和文件后缀,这将是
    -l antlr

    此外,库应该在程序源文件或对象文件之后给出,因为在大多数情况下,链接器会根据它们是否提供迄今为止所看到的所需的任何符号来决定要包含哪些库

    因此,我不确定这是否能解决所有问题,但向前迈出的一步是:

    g++ -std=c++11 -Wall -Wextra *.cpp -L ../runtime -l antlr -o exec
    

    我也自由添加了-W标志,以启用默认的编译器警告集,这是编写新C++代码时必须的,无论您是新的语言还是不。< /P>可能的Hi@ AsChuppl的复制,i用户-i,因为运行时/文件夹只包含.h和.cp文件以及由ANTLR4命令生成的原始文件。包括一个包含在其中的头文件。我也看到没有.a库,所以请查看我编辑的问题。在这种情况下,似乎你也要编译运行时/*.cpp文件。我不太熟悉antlr的设置,抱歉。这绝对是个问题,我应该先编译库。谢谢

    g++ -std=c++11 -Wall -Wextra *.cpp -L ../runtime -l antlr -o exec