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

[C++] multiple definition of.. - przy podziale projektu na części

Ostatnio zmodyfikowano 2014-02-06 22:19
Autor Wiadomość
Vister26
Temat założony przez niniejszego użytkownika
[C++] multiple definition of.. - przy podziale projektu na części
» 2014-02-06 21:47:34
Podzieliłem swój program na następujące pliki:

main.cpp:
C/C++
#include "game.cpp"

int main()
{
    oknoGry.create( sf::VideoMode( 800, 600, 32 ), "tytul" );
    gameLoop();
    return 0;
}

definicjeZmiennych.hpp:
C/C++
#ifndef DEFIS_HPP
#define DEFIS_HPP

#include <iostream>
#include <SFML/Graphics.hpp>

sf::RenderWindow oknoGry;
sf::Event zdarzenie;

void gameLoop();

#endif

game.cpp:
C/C++
#include "definicjeZmiennych.hpp"

void gameLoop()
{
    while( oknoGry.isOpen() )
    {
        sf::Event zdarzenie;
        while( oknoGry.pollEvent( zdarzenie ) )
        {
            if( zdarzenie.type == sf::Event::Closed )
                 oknoGry.close();
           
            if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape )
                 oknoGry.close();
           
            if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Middle )
                 oknoGry.close();
           
        }
        oknoGry.clear( sf::Color( 255, 0, 0 ) );
        oknoGry.display();
    }
}

A oto log kompilacji

obj\Debug\main.o|| In function `Z8gameLoopv':
game.cpp        |4|  multiple definition of `gameLoop()'
game.cpp        |4|  first defined here
obj\debug\main.o|| In function `_gthread_active_p':
d:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\mingw32\bits\gthr-default.h |403| multiple definition of `oknoGry'
game.cpp        |4|  first defined here
obj\debug\main.o|| In function `main':
main.cpp        |4|  multiple definition of `zdarzenie'

Zmieniałem kod w tych plikach na wiele sposobów, ale nic to nie zmieniło. Powiem jeszcze, że wzorowałem się na innym moim programie podzielonym bardzo podobnie, ale tam działa, a tu nie.

P-104136
MrPoxipol
» 2014-02-06 21:52:12
Plików źródłowych się nie includuje. Możesz załączać tylko nagłówki.
P-104137
Vister26
Temat założony przez niniejszego użytkownika
» 2014-02-06 21:56:24
Dzięki, zmiana rozszerzenia pomogła. Ciekawi mnie tylko jakim cudem w innym projekcie to działało?
P-104139
Monika90
» 2014-02-06 21:56:36
Oprócz tego co napisał MrPoxipol, to pliki nagłówkowe nie mogą zawierać definicji zmiennych, powinny to być deklaracje zmiennych.
Uzyj extern żeby zmienić definicje w deklaracje, a definicje umieść w game.cpp
P-104140
Vister26
Temat założony przez niniejszego użytkownika
» 2014-02-06 22:01:12
To w takim razie jak w magiczny sposób sprawić, aby funkcje z game.cpp użyć w main.cpp bez
#include
?
P-104141
Monika90
» 2014-02-06 22:19:00
Prawidłowo się to robi przy użyciu #include, ale nieco inaczej niż ty to próbowałeś zrobić. Poszukaj sobie na forum, na pewno było o tym nie raz.
P-104142
« 1 »
  Strona 1 z 1