• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Undefined reference to... c++ dzielenie funkcji na pliki .cpp i .h

Object Storage Arubacloud
0 głosów
405 wizyt
pytanie zadane 2 listopada 2020 w C i C++ przez MONKNOW Użytkownik (720 p.)
edycja 2 listopada 2020 przez MONKNOW

Witam, chciałbym korzystać z napisanych funkcji tak jak z obiektów za pomocą plików .h i .cpp. Niestety dostałem błąd, który z tego co zorientowałem się, jest błędem linkera : Undefined reference to dodawanie(int, int). Program pisze w Codeblocks, typ projektu wybrałem odpowiedni (Console Application). Wygląda to tak:

#include <iostream>
#include "funkcja.h"
using namespace std;

int main()
{
    int wynik;
    int x, y;
    cout << "Hello world!" << endl;
    cin >> x >> y;
    wynik = dodawanie(x, y);
    cout << wynik << endl;
    return 0;
}
#ifndef FUNKCJA_H
#define FUNKCJA_H

#include <iostream>

using namespace std;

int dodawanie(int x, int y);
#endif
#include <iostream>
#include "funkcja.h"

using namespace std;

int dodawanie(int x, int y){
    return x + y;
}

Edit: Sory, źle skopiowałem wcześniej jeden wycinek kodu.

2 odpowiedzi

+1 głos
odpowiedź 3 listopada 2020 przez TOM_CPP Pasjonat (22,640 p.)
wybrane 3 listopada 2020 przez MONKNOW
 
Najlepsza
  1. Utwórz nowy projekt konsolowy, skopiuj poprzedni kod do main.cpp
  2. Następnie dodaj klasę do projektu o nazwie Funkcja poprzez zakładkę File->New->Class...
  3. W plikach Funkcja.h i Funkcja.cpp zmodyfikuj odpowiednio kod.

 

komentarz 3 listopada 2020 przez MONKNOW Użytkownik (720 p.)
God bless you
0 głosów
odpowiedź 2 listopada 2020 przez j23 Mędrzec (194,920 p.)

Dodaj plik funkcja.cpp do projektu.

I wywal #include <iostream> i using namespace std; z funkcja.h i funkcja.cpp.

komentarz 2 listopada 2020 przez MONKNOW Użytkownik (720 p.)
Wszystkie pliki, które wyżej wspomniałem są już w projekcie. Wywaliłem te dyrektywy i nic sie nie zmieniło :( path w build options też już ustawiałem.. kompletnie nie wiem czemu tak się dzieje. Przy klasycznej obiektówce z klasami problem ten sam.
komentarz 2 listopada 2020 przez tangarr Mędrzec (154,860 p.)
Najlepiej będzie, jeżeli wkleisz tutaj zawartość pliku projektowego.
komentarz 2 listopada 2020 przez MONKNOW Użytkownik (720 p.)
Skopiowałem każdą zakładke z codeblocksa, to nie to samo? Jest jakiś inny sposób?
komentarz 2 listopada 2020 przez tangarr Mędrzec (154,860 p.)
Każda zakładka to osobny edytor tekstowy.
To że masz pootwierane jakieś zakładki nie znaczy, że te pliki znajdują się w twoim projekcie.
komentarz 2 listopada 2020 przez j23 Mędrzec (194,920 p.)

@MONKNOW, otwórz projekt, poszukaj opcji Add files, wybierz plik i kompiluj.

 

 

komentarz 2 listopada 2020 przez MONKNOW Użytkownik (720 p.)

oOczywiscie wszystko tak jak wspomniałem dodane zostało do projektu z Add files itp.. przy próbie kompilowania odsyła mnie do tego błędu

 

komentarz 2 listopada 2020 przez j23 Mędrzec (194,920 p.)
Ciekawe. Powinno być OK.

Usuń plik z projektu i dodaj go jeszcze raz.
komentarz 2 listopada 2020 przez tangarr Mędrzec (154,860 p.)
Ja bym raczej zamknął CodeBlocksa, potem usunął zbudowane pliki (prawodpowodbnie znajdują się w podkatalogach debug/release katalogu ze źródłami) i wtedy spróbował ponowanie.

Ewentualnie sprawdziłbym, czy ścieżka do katalogu ze źródłami nie zawiera spacji lub polskich znaków (być może CodeBlocks niepoprawnie przekazuje ścieżki do kompilatora).
komentarz 3 listopada 2020 przez MONKNOW Użytkownik (720 p.)
Nie mam polskich znaków w ścieżce, zbudowane pliki usuwałem i nadal nic :(

Podobne pytania

0 głosów
1 odpowiedź 546 wizyt
0 głosów
2 odpowiedzi 498 wizyt
0 głosów
2 odpowiedzi 635 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...