如何解决:未定义的对“ class :: function”的引用

时间:2019-04-19 11:04:44

标签: c++ linux linker-errors

我正在尝试编译程序,而在执行该程序时遇到的错误之一是:

g++ -o ./obj/Matriz2D.o ./src/Matriz2D.cpp -I./include -std=c++11
/usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/../../../../lib/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
/usr/bin/ld: /tmp/cc6kEtM3.o: in function `Matriz2D::Aniade(Secuencia)':
Matriz2D.cpp:(.text+0x4fd): undefined reference to `Secuencia::TotalUtilizados()'
/usr/bin/ld: Matriz2D.cpp:(.text+0x566): undefined reference to `Secuencia::Elemento(int)'
/usr/bin/ld: /tmp/cc6kEtM3.o: in function `Matriz2D::Inserta(int, Secuencia)':
Matriz2D.cpp:(.text+0x5bc): undefined reference to `Secuencia::TotalUtilizados()'
/usr/bin/ld: Matriz2D.cpp:(.text+0x6a0): undefined reference to `Secuencia::Elemento(int)'
/usr/bin/ld: /tmp/cc6kEtM3.o: in function `Matriz2D::Fila(int)':
Matriz2D.cpp:(.text+0x7b8): undefined reference to `Secuencia::Secuencia(int)'
/usr/bin/ld: Matriz2D.cpp:(.text+0x7ff): undefined reference to `Secuencia::Aniade(int)'
/usr/bin/ld: Matriz2D.cpp:(.text+0x814): undefined reference to `Secuencia::~Secuencia()'
/usr/bin/ld: /tmp/cc6kEtM3.o: in function `Matriz2D::Columna(int)':
Matriz2D.cpp:(.text+0x878): undefined reference to `Secuencia::Secuencia(int)'
/usr/bin/ld: Matriz2D.cpp:(.text+0x8bf): undefined reference to `Secuencia::Aniade(int)'
/usr/bin/ld: Matriz2D.cpp:(.text+0x8d4): undefined reference to `Secuencia::~Secuencia()'
collect2: error: ld returned 1 exit status
make: *** [makefile_sesion09.mak:74: obj/Matriz2D.o] Error 1

我试图从.cpp #include“ Secuencia.h”,。h中同时删除它们,但是我都没有成功

1 个答案:

答案 0 :(得分:0)

如果您没有其他要求, gcc 将尝试生成可执行二进制文件。仅将.o扩展名指定为输出文件不会更改此设置。要仅生成目标文件,您需要添加-c开关:

g++ -c -o ./obj/Matriz2D.o ./src/Matriz2D.cpp -I./include -std=c++11