Для меня это загадка:
c ++ неопределенная ссылка на деструктор
В этом проблема, код такой же, как ссылка, полный make-файл и ошибкиВот.Связанные ответы помогли, но только для того, чтобы подчеркнуть, что у меня есть несколько заголовков в месте, которого я не ожидал.
makefile
CXX = g++
BIN = .
LIBS = -L.
INCLUDE = -I . -I
CXXFLAGS = -pipe # -O6
LFLAGS = -lm
GeomTest_OBJS = geomTest.o SASAGeometry.o
geomTest_source = SASAGeometry.cpp SASAGeometry.h sasa_transformMatrix.cpp sasa_transformMatrix.h geomSetup.cpp
SASAGeometry.o : SASAGeometry.cpp SASAGeometry.h sasa_transformMatrix.cpp sasa_transformMatrix.h
geomTest.o : geomSetup.cpp
geomTest : $(GeomTest_OBJS) makefile
$(CXX) -o geomTest.o -o SASAGeometry.o $(LIBS) $(INCLUDE) $(CXXFLAGS) $(geomTest_source) $(LFLAGS)
$(CXX) $(LIBS) $(INCLUDE) $(CXXFLAGS) -o $(BIN)/geomTest geomTest.o SASAGeometry.o $(LFLAGS)
clean : \rm *.o *~ p1
Я объявил и создал экземпляр деструктора И не позволялкомпилятор делает свое дело)
ошибка
geomSetup.cpp:(.text+0x5ab): undefined reference to `SASAGeometry::~SASAGeometry()'
geomSetup.cpp:(.text+0x5cd): undefined reference to `SASAGeometry::~SASAGeometry()'
других ошибок нет.(извините, если предпочтительнее рассматривать, казалось бы, отсортированные проблемы, чем ссылаться на них, но мои усилия при этом не сработали)
Заранее спасибо!
РЕДАКТИРОВАТЬ:
УБЕДИТЕСЬ, ЧТОБЫ СОБИРАТЬ ПРАВИЛЬНЫЕ ФАЙЛЫ ИСТОЧНИКА, НЕ СТАРЫМ, КОТОРЫМ ВЫ ЗАБЫЛИ КОПИРОВАНИЕ.
Привет @trojanfoe и @Kerrick SB, оба ответа заставили меня взглянуть на мой make-файл ипонимаю, это было некрасиво.Вот пересмотренная версия.Я все еще получаю ту же «неопределенную ссылку на деструктор», хотя:
makefile:
CXX = g++
BIN = .
LIBS = -L.
INCLUDE = -I.
CXXFLAGS = -pipe # -O6
LDFLAGS = -lm
GeomTest_OBJS = sasa_transformMatrix.o SASAGeometry.o geomSetup.o
SASAGeometry.o : SASAGeometry.cpp SASAGeometry.h
sasa_transformMatrix.o : sasa_transformMatrix.cpp sasa_transformMatrix.h
geomSetup.o : geomSetup.cpp
geomTest : $(GeomTest_OBJS)
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $+
clean : \rm *.o *~ p1
error:
geomSetup.o: In function `main':
geomSetup.cpp:(.text+0x5ab): undefined reference to `SASAGeometry::~SASAGeometry()'
geomSetup.cpp:(.text+0x5cd): undefined reference to `SASAGeometry::~SASAGeometry()'
collect2: ld returned 1 exit status
make: *** [geomTest] Error 1
Почему компоновщик будет жаловаться надеструктор, а не конструктор или любые другие методы / функции в классе?
Еще раз спасибо!