[C++] multiple definition of.. - przy podziale projektu na części
Ostatnio zmodyfikowano 2014-02-06 22:19
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: #include "game.cpp"
int main() { oknoGry.create( sf::VideoMode( 800, 600, 32 ), "tytul" ); gameLoop(); return 0; }
definicjeZmiennych.hpp: #ifndef DEFIS_HPP #define DEFIS_HPP
#include <iostream> #include <SFML/Graphics.hpp>
sf::RenderWindow oknoGry; sf::Event zdarzenie;
void gameLoop();
#endif
game.cpp: #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. |
|
MrPoxipol |
» 2014-02-06 21:52:12 Plików źródłowych się nie includuje. Możesz załączać tylko nagłówki. |
|
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? |
|
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 |
|
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 ? |
|
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. |
|
« 1 » |