-1

所以我有一个包含多个文件的子目录,需要与之链接。在 .c 文件中,我有一个看起来有点像的包含:

#include "subdirectory/header.h"

这个头文件包括lex()我正在使用的函数,我在编译时的输出是:

 cc -IlexicalAnalyzer -Wall   -c -o parser.o parser.c
 cc -IlexicalAnalyzer -Wall   -c -o recognizer.o recognizer.c
 g++      -IlexicalAnalyzer -Wall parser.o recognizer.o  -o recognizer
 parser.o: In function `advance':
 parser.c:(.text+0x36): undefined reference to `lex'
 recognizer.o: In function `recognizer':
 recognizer.c:(.text+0xd): undefined reference to `newLexer'
 collect2: error: ld returned 1 exit status
 make: *** [recognizer] Error 1

我究竟做错了什么?

4

1 回答 1

2

您已经包含了来自 的头文件subdirectory,这很好,因为它为编译器声明了它们,但是那里还应该有一些您需要编译然后链接的源文件。这些源文件应该定义头文件引用的lex和函数。newLexer

于 2013-09-18T04:08:25.340 回答