Błąd linkera

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Hej, piszę bo nie mam pomysłu jak rozwiązać problem z linkerem. Otóż sytuacja wygląda tak, że mam projekt_A, w którym znajdują sie pliki: plik1.cc oraz plik1.h, a także projekt_B, w którym znajduje się pliki: plik2.cc oraz plik2.h. Chciałem wykorzystać metody zdefiniowane w plik2.cc w plik1.cc. W tym celu dołączyłem plik2.h do headera plik1.h (który jest oczywiście dołączony do plik1.cc). Następnie dodałem w makefilu projekt_A include z pliki2.cc dla linkera. Niestety kiedy chcę zbildować projekt_A, to podczas tworzenia plik2.o otrzymuje błędy "undifined reference to", które dotyczą funkcji wywoływanych wewnątrz metod z pliku2.cc.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

Pokaż kod, to powinno działać.

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Nie mogę wstawić kodu, ale obrazowo to wyląda tak:

Kopiuj
Projekt A

plik1.h
#include "path/plik2.h"
...

plik1.cc
#include "plik1.h"
...
Class1::method1()
{
	Class2::method2();
}
...

MakefileA
...
SRC_FILES += ${ROOT}path/plik2.cc
...

Projekt B

plik2.h

Class2
{
...
method2();
...
}

plik2.cc
Class2::method2()
{
	...
	Class3::method3();
	...
}

Output
Linking ProjektA...
path/pilk2.cc undifined reference to Class3::method3 

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

Class3 nigdzie nie ma, nic dziwnego, że nie widać referencji

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Rozumiem, że po dołączeniu headera z definicją Class3 do plik2.cc oraz po dodaniu w makefilu projekt_B include z kodem źródłowym tej klasy powinno działać?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.