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

[C++] Łączenie dwóch plików

Ostatnio zmodyfikowano 2014-04-08 13:29
Autor Wiadomość
buena
Temat założony przez niniejszego użytkownika
[C++] Łączenie dwóch plików
» 2014-04-08 11:02:36
Przykład z "Symfonii c++ standard" Grębosza
Program podzielony na dwa pliki, wszystko tak jak w książce, jednak u mnie nie działa.


-------------- Build: Debug in europa ---------------

Compiling: main.cpp
In file included from C:\Users\Justyna\Desktop\14.program podzielony na dwa pliki\europa\main.cpp:4:
C:\Users\Justyna\Desktop\14.program podzielony na dwa pliki\europa\nagl.h:2: error: expected initializer before 'extern'
C:\Users\Justyna\Desktop\14.program podzielony na dwa pliki\europa\main.cpp: In function 'void funkcja_francuska()':
C:\Users\Justyna\Desktop\14.program podzielony na dwa pliki\europa\main.cpp:11: error: 'ile_murzynow' was not declared in this scope
C:\Users\Justyna\Desktop\14.program podzielony na dwa pliki\europa\main.cpp:14: error: 'funkcja_egipska' was not declared in this scope
C:\Users\Justyna\Desktop\14.program podzielony na dwa pliki\europa\main.cpp: In function 'void funkcja_niemiecka()':
C:\Users\Justyna\Desktop\14.program podzielony na dwa pliki\europa\main.cpp:21: error: 'ile_murzynow' was not declared in this scope
Process terminated with status 1 (0 minutes, 0 seconds)
4 errors, 0 warnings


Plik: afryka.cpp
C/C++
#include <iostream>
using namespace std;

#include "nagl.h"
int ile_murzynow = 9;
int main()
{
    cout << "Poczatek 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 \n";
}
//************************************************
void funkcja_kenijska()
{
    cout << "Jestem w Nairobi !-----------\n";
    cout << "Na swiecie jest " << ile_murzynow << " murzynow, oraz "
    << ile_europejczykow << "europejczykow \n";
}
//*********************************************

Plik: europa.cpp
C/C++
#include <iostream>
using namespace std;

#include "nagl.h"
int ile_europejczykow = 8;
//****************************************************
void funkcja_francuska()
{
    cout << "Jestem w Paryzu!*****************\n";
   
    cout << "Na swiecie jest " << ile_murzynow << " murzynow, oraz "
    << ile_europejczykow << " europejczykow \n";
   
    funkcja_egipska();
}
//*****************************************************
void funkcja_niemiecka( void )
{
    cout << "Jestemw Berlinie ! ***********************\n";
   
    cout << "Na swiecie jest " << ile_murzynow << "murzynow, oraz "
    << ile_europejczykow << " europejczykow \n";
   
    funkcja_kenijska();
}
//*******************************************************

Plik: nagl.h
C/C++
extern int ile_murzynow;
extern int ile_europejczykow;

void funkcja_egipska();
void funkcja_kenijska();
void funkcja_francuska();
void funkcja_niemiecka();
P-107893
alixir
» 2014-04-08 11:10:46
Hmm dziwne. Skoro pliki nazywają się afryka.cpp, europa.cpp i nagl.h, to jakim cudem u ciebie kompilator kompiluje main.cpp.
Wydaje mi się że problemem jest niepoprawnie utworzony project, a nie sam kod, bo ten jest poprawny.
P-107894
buena
Temat założony przez niniejszego użytkownika
» 2014-04-08 11:37:02
Rzeczywiście, źle było zapisane. Poprawiłam to, teraz wyświetla się coś takiego:

C:\Users\Justyna\Desktop\14.program podzielony na dwa pliki\afryka\afryka.o:afryka.cpp:(.text+0x65): undefined reference to `ile_europejczykow'
C:\Users\Justyna\Desktop\14.program podzielony na dwa pliki\afryka\afryka.o:afryka.cpp:(.text+0xe0): undefined reference to `ile_europejczykow'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 1 seconds)
4 errors, 0 warnings

P-107895
alixir
» 2014-04-08 12:39:20
Nadal uważam, że to nie wina kodu. Jakiego środowiska używasz? Czy masz poprawnie utworzony projekt, w którym znajdują się dwa pliki źrodłowe .cpp oraz jeden nagłowkowy .h ?

Na moje oko podałaś niepełny log, a brakujące linie wyglądają pewnie tak:
undefined reference to `funkcja_francuska()'
undefined reference to `funkcja_niemiecka()'

A to wskazywało by na to, że project nie zawiera pliku europa.cpp
P-107896
buena
Temat założony przez niniejszego użytkownika
» 2014-04-08 13:29:11
Błąd robiłam przy tworzeniu tych pików, zapisywałam jako oddzielne projekty i nie wiedziałam jak je powiązać, myślałam że zapisanie w jednym folderze wystarczy. Już działa, dziękuję za pomoc.
P-107898
« 1 »
  Strona 1 z 1