【问题标题】:g++ linker error “undefined reference to "Class::function"”g++ 链接器错误“未定义对“Class::function”的引用”
【发布时间】: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 链接在一起。 我不知道出了什么问题,希望有人能帮助我。

【问题讨论】:

    标签: linker makefile g++


    【解决方案1】:

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

    不,他们不是。

    我猜这是链接器问题,

    你的猜测不正确。

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

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      相关资源
      最近更新 更多