-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 に答える