Skocz do zawartości
LyanVu

Łączenie modułów ;///

Rekomendowane odpowiedzi

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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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. :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

celowo nie wkleiłem dołączania bibliotek podstawowych itp. aby dla was mój problem był lepiej czytelny -.-

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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?). :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×