Eu descobri o problema. Não encontrei a solução específica, mas encontrei um trabalho por aí. Aparentemente as aulas não estão sendo vinculadas. Então eu coloquei todas as classes no arquivo principal e funcionou perfeitamente!
Eu tenho um programa em C ++ que compila e roda perfeitamente em blocos de código. No entanto, quando tento compilá-lo a partir do terminal usando:
gcc -g main.cpp -o Main
Eu recebo muitas referências indefinidas:
E esta é uma captura de tela do programa em execução no Code Blocks:
Eu descobri o problema. Não encontrei a solução específica, mas encontrei um trabalho por aí. Aparentemente as aulas não estão sendo vinculadas. Então eu coloquei todas as classes no arquivo principal e funcionou perfeitamente!
Você deve estar compilando usando g++
, gcc
compila programas em C. Para instalar todos os pacotes necessários de g++
, faça sudo apt-get install build-essential
em um terminal e, em seguida, compile seu programa, faça g++ -g main.cpp -o Main
.
g++
para programas C ++ sempre! Isso porque:
Então, eles são compiladores diferentes e, portanto, são pacotes diferentes. As principais diferenças:
gcc
compilará: *.c
/ *.cpp
arquivos como C e C ++, respectivamente. g++
irá compilar: *.c
/ *.cpp
files, mas todos serão tratados como arquivos C ++. g++
para vincular os arquivos de objeto, ele vinculará automaticamente nas bibliotecas std C ++ ( gcc
não faz isso). gcc
compilar arquivos C tem menos macros predefinidas. gcc
compilação *.cpp
e g++
compilação *.c
/ *.cpp
têm algumas macros extras.