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

Linkowanie dwóch plików cpp i nagłówka w Code::Blocks
GF
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
  • Lokalizacja:Łódź
  • Postów:10
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

Kopiuj
#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 ;)

Narkan
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 8 lat
0

Sprawdź czy pliki są w tym samym folderze.

GF
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
  • Lokalizacja:Łódź
  • Postów:10
0

Wszystko jest w tym samym folderze

Narkan
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 8 lat
0

Pokaż te pliki

GF
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
  • Lokalizacja:Łódź
  • Postów:10
0

Wszystko jest przepisane z Symfonii C++

afryka.cpp

Kopiuj
#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

Kopiuj
#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

Kopiuj
#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

edytowany 2x, ostatnio: GoFFer95
GF
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
  • Lokalizacja:Łódź
  • Postów:10
0

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

GF
Narkan
Wybacz. Nie miałem ustawionych powiadomień. Zaraz dopisze posta :P
Narkan
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 8 lat
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 :

Kopiuj
 #ifndef nagl_h
#define nagl_h

W każdym pliku zmień

Kopiuj
#include"nagl.hpp" 

na #include"nagl.h"

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

. I powinno działać

edytowany 1x, ostatnio: Narkan
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
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.

Narkan
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 8 lat
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

twonek
Co nie dowodem na to, że to co podałeś jest (prawidłowym) rozwiązaniem problemu. A propos, skompilowałem bez problemu kod autora w konsoli.
Narkan
Ja nie próbowałem tego robić przez konsole a przez środowisko.
fasadin
Narkan. praktycznie nigdy nie powinno sie includowac cpp. Jest tylko jeden wyjatek (pisanie szablonow i podzielenie ich na dwie czesci) i tyle.
Narkan
Ok, dzięki za rade, będę starał się unikać takich zabiegów

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.