我正在使用makefile在linux IDE中编译我的C ++项目。 makefile如下:
#-------------------------------
SRCDIR=src
ICDDIR=include
TESTDIR=test
CC=g++
OBJS = main.o Complex.o TestComplex.o
DEBUG = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
#-------------------------------
test : $(OBJS)
$(CC) $(LFLAGS) $(OBJS) -o output -I $(ICDDIR)
main.o : $(SRCDIR)/main.cpp
$(CC) $(CFLAGS) $(SRCDIR)/main.cpp -I $(ICDDIR)
Complex.o : $(SRCDIR)/Complex.cpp $(ICDDIR)/Complex.h
$(CC) $(CFLAGS) $(SRCDIR)/Complex.cpp -I $(ICDDIR)
TestComplex.o : $(TESTDIR)/TestComplex.cpp $(ICDDIR)/TestComplex.h $(ICDDIR)/Complex.h
$(CC) $(CFLAGS) $(TESTDIR)/TestComplex.cpp -I $(ICDDIR)
可怕的错误信息: 使
g++ -Wall -c -g src/main.cpp -I include
g++ -Wall -c -g src/Complex.cpp -I include
g++ -Wall -c -g test/TestComplex.cpp -I include
g++ -Wall -g main.o Complex.o TestComplex.o -o output -I i
nclude
main.o: In function `main':
proj1/src/main.cpp:11: undefined reference to
`Complex::Complex()'
proj1/src/main.cpp:11: undefined reference to
`Complex::Complex()'
proj1/src/main.cpp:13: undefined reference to
`Complex::Complex(double, double)'
proj1/src/main.cpp:14: undefined reference to
`Complex::Complex(double, double)'
TestComplex.o: In function `TestComplex::TestComplex()':
proj1/test/TestComplex.cpp:8: undefined refer
ence to `Complex::Complex()'
TestComplex.o: In function `TestComplex::compute(Complex, Complex)':
proj1/test/TestComplex.cpp:34: undefined refe
rence to `operator+(Complex const&, Complex const&)'
proj1/test/TestComplex.cpp:37: undefined refe
rence to `operator-(Complex const&, Complex const&)'
proj1/test/TestComplex.cpp:40: undefined refe
rence to `operator*(Complex const&, Complex const&)'
proj1/test/TestComplex.cpp:43: undefined refe
rence to `operator/(Complex const&, Complex const&)'
proj1/test/TestComplex.cpp:46: undefined refe
rence to `operator==(Complex const&, Complex const&)'
collect2: error: ld returned 1 exit status
我的项目结构:
src/
Complex.cpp
main.cpp
include/
Complex.h
TeseComplex.h
test/
TestComplex.cpp
Makefile
我的所有头文件和源文件都已正确实现。 我想这是一个链接器问题,但我确实将所有.o链接在一起。 我不知道出了什么问题,我希望有人能帮助我。
答案 0 :(得分:0)
我的所有头文件和源文件都已正确实现。
不,他们不是。
我想这是一个链接器问题,
你的猜测不正确。
很遗憾,您还没有提供足够的信息来帮助您。显示include/Complex.h
和src/Complex.cpp
可能会有所帮助。