[C++] unresolved external symbol "void __cdecl funkcja_egipska(void)"
Ostatnio zmodyfikowano 2013-09-19 12:15
Dadits Temat założony przez niniejszego użytkownika |
[C++] unresolved external symbol "void __cdecl funkcja_egipska(void)" » 2013-09-19 11:37:19 Witam,
zacząłem się interesować zagadnieniem pisania programów. Nabyłem książki Jerzy Grębosz "Symfonia C++ standard" - wydanie drugie. W książce pojawił się przykład programu podzielonego na kilka plików, chciałem zobaczyć jak to działa w kompilatorze (VS 2010), przepisałem całą treść kody, lecz niestety program nie chce się uruchomić, domyślam się, że jako iż jest to wydanie drugie a aktualne wydanie (o ile się nie mylę) to numer 3, więc zapewne występują jakieś nowości, ulepszenia, jednak bardzo mi należy na rozwikłaniu tego problemu. Poniżej zamieszczam krótkie kody z trzech plików:
Plik: afryka.cpp
#include <iostream> #include "nagl.h" using namespace std;
int ile_murzynow = 9;
void funcka_egipska( void ) { cout << "Jestem w Kairze !-------- \n" << "Na swiecie jest " << ile_murzynow << " murzynow, oraz " << ile_europejczykow << " europejczykow \n"; }
void funkcja_kenijska() { cout << "Jestem w Nairobi ! --------\n" << "Na swiecie jest " << ile_murzynow << " murzynow, oraz " << ile_europejczykow << " europejczykow \n"; }
int main() { cout << "Poczatek programu\n"; funkcja_francuska(); funkcja_niemiecka(); cout << "Koniec programu \n"; }
Plik: europa.cpp
#include <iostream> #include "nagl.h"
using namespace std;
int ile_europejczykow = 8;
void funkcja_francuska() { cout << "Jestem w Paryzu ! ********\n" << "Na swiecie jest " << ile_murzynow << " murzynow, oraz " << ile_europejczykow << " europejczykow \n"; funkcja_egipska(); }
void funkcja_niemiecka( void ) { cout << "Jestem w Berlinie ! ********\n" << "Na swiecie jest " << ile_murzynow << " murzynow, oraz " << ile_europejczykow << " europejczykow \n"; funkcja_kenijska(); }
Plik: nagl.h
extern int ile_murzynow; extern int ile_europejczykow;
void funkcja_egipska(); void funkcja_kenijska(); void funkcja_francuska(); void funkcja_niemiecka();
Problem:
1>------ Build started: Project: Symfonia, Configuration: Debug Win32 ------
1>Build started 19/09/2013 10:36:38.
1>InitializeBuildStatus:
1> Touching "Debug\Symfonia.unsuccessfulbuild".
1>ClCompile:
1> europa.cpp
1> afryka.cpp
1> Generating Code...
1>ManifestResourceCompile:
1> All outputs are up-to-date.
1>europa.obj : error LNK2019: unresolved external symbol "void __cdecl funkcja_egipska(void)" (?funkcja_egipska@@YAXXZ) referenced in function "void __cdecl funkcja_francuska(void)" (?funkcja_francuska@@YAXXZ)
1>D:\Zawartosc E\Visual Studio 2010\Symfonia\Debug\Symfonia.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:02.53
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== |
|
unimator |
» 2013-09-19 11:55:41 Różnice między wydaniami nie są z tego co wiem jakieś kolosalne, a już na pewno nie takie, że dotyczą innego standardu. To jest błąd, który trzeba rozwiązać: europa.obj : error LNK2019: unresolved external symbol "void __cdecl funkcja_egipska(void)" (?funkcja_egipska@@YAXXZ) referenced in function "void __cdecl funkcja_francuska(void)" (?funkcja_francuska@@YAXXZ)
Nie masz definicji funkcji funkcja_egipska (tzn. zrobiłeś literówkę tam gdzie chciałeś ją zdefiniować czyli w pliku afryka.cpp). |
|
Dadits Temat założony przez niniejszego użytkownika |
» 2013-09-19 12:15:16 Faktycznie, była literówka. Dziwi mnie tylko, że nic nie zostało podkreślone, chociażby w pliku *.h podkreślenie "funkcja_egipska()" skoro jest to tylko deklaracja a nigdzie nie ma definicji. Taki tak wielkie dzięki za pomoc, wszystko działa. |
|
« 1 » |