Podział programu na moduły

Podział programu na moduły
mbar254
  • Rejestracja:około 14 lat
  • Ostatnio:około 10 lat
  • Postów:47
0

Witajcie. W jakiej kolejnośći powinny być dodawane wszystkie includy, aby nie wyświetlalo "Undefined reference to funkcja"? Osobne pliki buildują się, ale podczas linkowania projektu w całośc wyświetla mi się to zawsze. Chodzi o to, że w mainie i w innym pliku cpp dodaję tą samą bibliotekę. Jak to rozwiązać? IDE to Code::Blocks

Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0

Podaj okrojony przykład kodu, który powoduje takie zachowanie... Albo - może po prostu plik implementacji (cpp) nie jest dodany do projektu?


mbar254
  • Rejestracja:około 14 lat
  • Ostatnio:około 10 lat
  • Postów:47
0

Chodzi o program w WinApi wiec okrojony kod to ciezko bedzie.

W glownym pliku mam:
#include <windows.h>
#include <Windowsx.h>
#include "Obsluga_plikow.h"

a w pliku cpp:
#include <windows.h>
#include "Obsluga_plikow.h"

W ogóle tego podziału i dolaczania nie rozumiem. Jest to gdzies jakos ladnie wyjasnione? Poki co nie znalazlem takiej stronki :/

Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0

Czy w Projekcie masz dodane obydwa pliki .cpp?


mbar254
  • Rejestracja:około 14 lat
  • Ostatnio:około 10 lat
  • Postów:47
0

w projekcie są obydwa pliki .cpp i plik .h

Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0

A jaki konkretnie dostajesz błąd? Bo w tej chwili to albo wbrew temu co piszesz - nie masz w projekcie (nie w katalogu, tylko w projekcie w Code::Blocks - tam po lewej :P) pliku z implementacją, albo nie podajesz jakiejś biblioteki do opcji linkera. Jeżeli to drugie to zwykle wyszukiwanie w google szybko podpowiada co zrobić.


mbar254
  • Rejestracja:około 14 lat
  • Ostatnio:około 10 lat
  • Postów:47
0

w pliku obsluga_plikow.cpp mam funckję void otworz(), która wyswietla mi okienko do otwarcia pliku...
w pliku obsluga_plikow.h mam deklaracje tej funkcji...
w pliku głownym programu w WM_COMMAND mam wywolanie : otworz();

Osobno pliki sie kompiluja, ale gdy chcę skompilować cały projekt wywala : Undefined reference to otworz().

Kiedys mialem banalny program ktory wyswietlal jedynie jakis napis. Podzielilem go na moduly, w Builderze wszystko działało, a po skopiowaniu tego kodu do nowego projektu w Code::Blocks'ie nie działał... Wywałał dokładnie takie sam błąd.

Wydaje mi się, że wszystko robię tak jak powinienem, bo wszystkie pliki są dodane do projektu.

Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0

Czy to u Ciebie wygląda mniej więcej tak jak na obrazku?user image
Czy budujesz przez "Build" albo "Rebuild"?


mbar254
  • Rejestracja:około 14 lat
  • Ostatnio:około 10 lat
  • Postów:47
0

wciskam F9, czyli Build and run

Jesli chodzi o pliki dodane do projektu to wyglada to tak samo.

edytowany 1x, ostatnio: mbar254
byku_guzio
dałeś za mało informacji - wrzuć kod
Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0

Możesz wkleić tutaj log budowania? (Build log). No i kod też by się przydał, bo może rzeczywiście nie napisałeś implementacji dla zadeklarowanej funkcji? Czy w obydwu plikach funkcja nazywa się tak samo i ma takie same typy argumentów?


edytowany 1x, ostatnio: Xupicor
byku_guzio
dodatkowo taki błąd może spowodować np. brak średnika po definicji klasy, więc bez kodu może być ciężko

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.