【发布时间】:2014-12-06 10:25:39
【问题描述】:
我正在使用 makefile 在 linux IDE 中编译我的 C++ 项目。 生成文件如下:
#-------------------------------
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 链接在一起。 我不知道出了什么问题,希望有人能帮助我。
【问题讨论】: