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
Podaj okrojony przykład kodu, który powoduje takie zachowanie... Albo - może po prostu plik implementacji (cpp) nie jest dodany do projektu?
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 :/
Czy w Projekcie masz dodane obydwa pliki .cpp
?
w projekcie są obydwa pliki .cpp i plik .h
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ć.
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.
Czy to u Ciebie wygląda mniej więcej tak jak na obrazku?
Czy budujesz przez "Build" albo "Rebuild"?
wciskam F9, czyli Build and run
Jesli chodzi o pliki dodane do projektu to wyglada to tak samo.
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?