Linkowanie dwóch plików cpp i nagłówka w Code::Blocks

0

Witajcie ;)

Mam problem ze zlinkowaniem dwóch plików cpp i nagłówka. Czytam "Symfonię C++" i generalnie jest tam wytłumaczone jak działa taki program składający się z kilku plików, ale ja nie wiem jak je zlinkować.. Nagłówek, który stworzyłem ma nazwę nagl.hpp, więc w dyrektywach dałem #include "nagl.hpp", jednakże dostaję komunikat "No such file or directory" podczas kompilacji. Do samego nagłówka wrzuciłem

#ifndef NAGL_HPP_INCLUDED
#define NAGL_HPP_INCLUDED
(deklaracje funkcji)
#endif // NAGL_HPP_INCLUDED

Nie wiem, czy to dobry sposób, czy nie. Generalnie nie potrafię znaleźć nigdzie info o tym jak to wszystko zrobić. Będę wdzięczny za pomoc ;)

0

Sprawdź czy pliki są w tym samym folderze.

0

Wszystko jest w tym samym folderze

0

Pokaż te pliki

0

Wszystko jest przepisane z Symfonii C++

afryka.cpp

#include<iostream>
#include "nagl.hpp"
using namespace std;


int ile_murzynow = 9;
int main()
{
    cout << "Poczatek programu\n";
    funkcja_francuska();
    funkcja_niemiecka();
    cout << "Koniec programu\n";
    return 0;
}

void funkcja_egipska()
{
    cout << "Jestem w Kairze !-----------\n";
    cout << "Na swiecie jest " << ile_murzynow << " murzynow oraz "
    << ile_europejczykow << " europejczykow\n";
}

void funkcja_kenijska()
{
    cout << "Jestem w Nairobi!--------\n";
    cout << "Na swiecie jest " << ile_murzynow << " murzynow oraz "
    << ile_europejczykow << " europejczykow\n";
}

europa.cpp

#include<iostream>
#include "nagl.hpp"
using namespace std;


int ile_europejczykow=8;

void funkcja_francuska()
{
    cout << "Jestem w Pary¿u!*********\n";
    cout << "Na swiecie jest " << ile_murzynow << " murzynow oraz "
    << ile_europejczykow << " europejczykow\n";
    funkcja_egipska();

}

void funkcja_niemiecka()
{
    cout << "Jestem w Berlinie!*********\n";
    cout << "Na swiecie jest " << ile_murzynow << " murzynow oraz "
    << ile_europejczykow << " europejczykow\n";
    funkcja_kenijska();

}

Nagłówek nagl.hpp

#ifndef NAGL_HPP_INCLUDED
#define NAGL_HPP_INCLUDED

extern int ile_murzynow;
extern int ile_europejczykow;

void funkcja_egipska();
void funkcja_kenijska();
void funkcja_francuska();
void funkcja_niemiecka();


#endif // NAGL_HPP_INCLUDED

0

Podbijam temat, żeby ktoś mi raczył odpowiedzieć ;)

0

jakieś brednie piszą w Symfoni... xD Zrobiłem po swojemu i działa. Plikowi nagl.hpp zmień nazwe na nagl.h i 2 pierwsze dyrektywy preprocesora zmień na :

 #ifndef nagl_h
#define nagl_h

W każdym pliku zmień

#include"nagl.hpp" 

na #include"nagl.h"

. Dalej w pliku afryka dopisz <code class="cpp"> #include "europa.cpp"

. I powinno działać

0

@Narkan nazwa pliku nagłówkowego i strażnika nagłówka (autorskie tłumaczenie, nie wiem jak to powinno brzmieć :D) nie mają znaczenia. Natomiast #include "*.cpp" już zakrawa na herezję ;)

@GoFFer95 najprawdopodobniej masz coś źle ustawione w projekcie, przez co kompilator nie widzi pliku nagłówkowego. Zła ścieżka albo coś w tym stylu. Poszukaj na stronie CodeBlocks jak to powinno być, spróbuj skompilować jakieś najprostsze przykłady. W każdym razie problem nie leży w Twoim kodzie.

0

@twonek uruchomiłem to nie tworząc żadnego projektu i nic, stworzyłem tylko 3 pliki i wkleiłem to co tu było i miałem te same objawy jak autor, dopiero po tej zmianie to działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1