Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Undefined reference to (nazwa funkcji)

Ostatnio zmodyfikowano 2016-11-07 19:19
Autor Wiadomość
Borwar
Temat założony przez niniejszego użytkownika
Undefined reference to (nazwa funkcji)
» 2016-11-07 18:02:52
Cześć, jestem bardzo początkującym programistą i korzystam z książki Symfonia C++ Standard Jerzego Grębosza, jest to o tyle ważne, że muszę o tym wspomnieć.
Na samym początku wprowadzenia do tematu związanego z dzieleniem programu i pisaniem go w kilku plikach Pan Jerzy wszystko dokładnie objaśnia jednak ja mam problem.
Próbowałem napisać taki sam program jaki podaje za przykład autor książki, jednak z moimi zmiennymi i całym tekstem... Jednak przy próbie kompilacji wyskoczył mi błąd.
Później spróbowałem przepisać jego program słowo w słowo, ale dalej wyświetla się błąd podczas kompilowania programu. Przykładowo "Undefined reference to 'funkcja_niemiecka'.
Mój kompilator to "GNU GCC Compiler".


Main 1
C/C++
#include <iostream>
using namespace std;
#include "naglowek.h"
int ile_murzynow = 9;
int main()
{
    cout << "Początek programu\n";
    funkcja_francuska();
    funkcja_niemiecka();
    cout << "Koniec programu \n";
}
void funkcja_egipska()
{
    cout << "Jestem w Kairze ! --------\n";
    cout << "Na swiecie jest " << ile_murzynow
    << " murzynow, oraz " << ile_europejczykow << " europejczykow.";
}
void funkcja_kenijska()
{
    cout << "Jestem w Nairobi ! --------\n";
    cout << "Na swiecie jest " << ile_murzynow
    << " murzynow, oraz " << ile_europejczykow << " europejczykow.";
}
Nagłówek
C/C++
#ifndef NAGLOWEK_H_INCLUDED
#define NAGLOWEK_H_INCLUDED
#endif
#include <iostream>

extern int ile_murzynow;
extern int ile_europejczykow;

void funkcja_egipska();
void funkcja_kenijska();
void funkcja_francuska();
void funkcja_niemiecka();
Main 2
C/C++
#include <iostream>
using namespace std;

#include "naglowek.h"
int ile_europejczykow = 9;

void funkcja_francuska()
{
    cout << "Jestem w Paryzu ! --------\n";
    cout << "Na swiecie jest " << ile_murzynow
    << " murzynow, oraz " << ile_europejczykow << " europejczykow.";
    funkcja_egipska();
}
void funkcja_niemiecka()
{
    cout << "Jestem w Berlinie ! --------\n";
    cout << "Na swiecie jest " << ile_murzynow
    << " murzynow, oraz " << ile_europejczykow << " europejczykow.";
    funkcja_kenijska();
}


||=== Build: Debug in Hello (compiler: GNU GCC Compiler) ===|
obj\Debug\main.o||In function `main':|
C:\Users\Jakub\Documents\CodeBlocks\Hello\main.cpp|8|undefined reference to `funkcja_francuska()'|
C:\Users\Jakub\Documents\CodeBlocks\Hello\main.cpp|9|undefined reference to `funkcja_niemiecka()'|
obj\Debug\main.o||In function `Z15funkcja_egipskav':|
C:\Users\Jakub\Documents\CodeBlocks\Hello\main.cpp|16|undefined reference to `ile_europejczykow'|
obj\Debug\main.o||In function `Z16funkcja_kenijskav':|
C:\Users\Jakub\Documents\CodeBlocks\Hello\main.cpp|22|undefined reference to `ile_europejczykow'|
||error: ld returned 1 exit status|
||=== Build failed: 5 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

P-153450
mateczek
» 2016-11-07 19:19:12
jakie ide?? i czy pliki dodałeś do projektu ??(pytanie trochę retoryczne bo na 90% jestem pewny, że tu właśnie tkwi błąd)
A błąd sugeruje, że nie skompilowałeś drugiego pliku cpp i go nie podlinkowałeś z pierwszym !!!


PS. pomyśl nad nazewnictwem. Tak aby jasno kojarzyło się z tym co jest w pliku. I takiej logiki by w pliku "moje.h" były deklaracje tych funkcji których implementacje są w pliku "moje.cpp"
P-153451
« 1 »
  Strona 1 z 1