g ++链接器错误“未定义引用”类::函数“”

时间:2014-12-06 10:25:39

标签: linker makefile g++

我正在使用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链接在一起。 我不知道出了什么问题,我希望有人能帮助我。

1 个答案:

答案 0 :(得分:0)

  

我的所有头文件和源文件都已正确实现。

不,他们不是。

  

我想这是一个链接器问题,

你的猜测不正确。

很遗憾,您还没有提供足够的信息来帮助您。显示include/Complex.hsrc/Complex.cpp可能会有所帮助。