LyanVu Opublikowano 13 Marca 2014 Udostępnij Opublikowano 13 Marca 2014 Witam, mam taki o to problem, którego rozwiązania nie mogę znaleźć w guglach. A więc, na jakiej zasadzie łączę moduły? Takie coś nie działa: Game.cpp: int Powitanie() { cout << "elo"; return 0; } main.cpp: #include "Game.cpp" using namespace std; int main() { Powitanie(); _getch(); return 0; } Wystakuje: 1>main.obj : error LNK2005: "int __cdecl Powitanie(void)" (?Powitanie@@YAHXZ) already defined in Game.obj 1>C:\exe : fatal error LNK1169: one or more multiply defined symbols found Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Czarny Ass Opublikowano 13 Marca 2014 Udostępnij Opublikowano 13 Marca 2014 Aż nie wiem od czego tu zacząć... Przede wszystkim, załącz ważne biblioteki jak iostream. Poza tym to jest kompletnie źle wykonany kod. Dołączasz nagłówek, nie kod źródłowy, czyli zrób plik Game.hpp i jego załączasz. #ifndef _GAME_HPP #define _GAME_HPP int Powitanie(); #endif To jest warunek istnienia stałej _GAME_HPP, jeśli nie istnieje wykonuje kod wewnątrz instrukcji warunkowej. Tam definiowana jest stała, więc nie ma szans na podwójne załączenie pliku nagłówkowego, później dodajesz wszystkie deklaracje funkcji, a ich ciała zostawiaj w Game.cpp. I tego pliku nigdzie nie dołączasz, bo kompilator robi to za Ciebie. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LyanVu Opublikowano 13 Marca 2014 Autor Udostępnij Opublikowano 13 Marca 2014 celowo nie wkleiłem dołączania bibliotek podstawowych itp. aby dla was mój problem był lepiej czytelny -.- Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Czarny Ass Opublikowano 13 Marca 2014 Udostępnij Opublikowano 13 Marca 2014 Co to za różnica? Tylko wprowadza nas to w błąd, a czytelniej jest jak jest wszystko co potrzebne. No dobra, więc problem leży w tym, że źle dołączyłeś plik, nic więcej. Zrób tak jak mówiłem i będzie cacy. :) EDIT: Ano, nie rób funkcji zwracających int jeśli to niepotrzebne. Nawet dla samej czytelności zmień to na void i wywal return (bo po co to?). :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LyanVu Opublikowano 13 Marca 2014 Autor Udostępnij Opublikowano 13 Marca 2014 DOBRA JUŻ WSZYSTKO CZAJE. Dziękuję i pozdrawiam. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się