解决方法:未定义对"class::function"的引用

How to fix: undefined reference to "class::function"

本文关键字:function class 引用 方法 未定义 解决      更新时间:2023-10-16

我试图编译一个程序,在我这样做时遇到的一个错误是这样的:

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中删除

,同时删除它们,但我没有成功

如果你不问,gcc 将尝试生成一个可执行的二进制文件。仅将 .o 扩展名指定到输出文件不会更改此设置。要只生成目标文件,您需要添加-c开关:

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