Если вы реализуете методы класса в файле somefile.cpp, а ваша программа находится в файле otherfile.cpp, вам необходимо скомпилировать ее на g++ somefile.cpp otherfile.cpp ...
.
Ошибка компоновщика означает, что вы включили все заголовки, которые вам нужны, но вы не скомпилировали определение некоторых функций.
Лучший способ скомпилировать более сложные проекты - через Makefile.
Пример Makefile:
all: main
main: main.cpp blue.o
g++ main.cpp blue.o -o main
blue.o: blue.cpp blue.h
g++ blue.cpp -c -o blue.o
Затем вы можете скомпилировать проект по команде make
Это Makefile говорит, что ваши проекты нужны основной, основной зависит от main.cpp и blue.o. Так что если main.cpp или blue.o не является фактическим, он попытается сделать оба из них, а затем main, командой g++ main.cpp blue.o -o main
.
Затем, blue.o зависит от blue.cpp и blue.h. Синий будет скомпилирован для объектного файла blue.o.
забыли '# includes' ?? –
[См. Этот вопрос.] (Http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix) – chris
@ GrijeshChauhan: Отсутствующие '# include' не вызывают ошибок компоновщика. –