This question already has answers here:
What is an undefined reference/unresolved external symbol error and how do I fix it?
(32个答案)
7个月前关闭。
我试图编译一个程序,但我在编译时遇到的一个错误是:
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中删除“Secuencia.h”,从.h中删除,同时在这两个文件中都删除了,但都没有成功

最佳答案

如果您不另外要求,gcc将尝试生成一个可执行的二进制文件。仅仅指定输出文件的.o扩展名并不能改变这一点。要生成对象文件,需要添加-c开关:

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

关于c++ - 如何解决:未定义对“class::function”的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55760867/

10-11 15:40