multiple definition of ...
Ostatnio zmodyfikowano 2014-06-26 20:55
Jacob99 Temat założony przez niniejszego użytkownika |
multiple definition of ... » 2014-06-26 20:18:10 Cały czas robię moją grę i dzisiaj przy kompilacji otrzymałem błąd, i nie mam pojęcia skąd on się bierze. Log błędu: -------------- Build: Debug in GAME OF THE YEAR EDITION (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -std=c++11 -Wall -std=c++11 -g -I"D:\SFML 2.0\include" -Iinclude -I"D:\Code Blocks\CodeBlocks\MinGW\include\SFML" -c "D:\Pliki G\Dokumenty\Moje Dokumenty\programowanie w c++ programy i kody źródłowe\GAME OF THE YEAR EDITION\src\Player.cpp" -o obj\Debug\src\Player.o mingw32-g++.exe -L"D:\SFML 2.0\lib" -L"D:\Pliki G\programowanie w C++\SFML-2.1-windows-gcc-4.7-mingw-32bits\SFML-2.1\lib" -o "bin\Debug\GAME OF THE YEAR EDITION.exe" obj\Debug\main.o obj\Debug\src\GUI.o obj\Debug\src\Player.o -lsfml-graphics -lsfml-window -lsfml-system -lsfml-audio obj\Debug\src\Player.o: In function `ZNSt12_Destroy_auxILb1EE9__destroyIPN2sf6VertexEEEvT_S5_': d:/codeblocks/mingw/lib/gcc/mingw32/4.8.1/include/c++/mingw32/bits/gthr-default.h:300: multiple definition of `event' obj\Debug\main.o:d:/codeblocks/mingw/lib/gcc/mingw32/4.8.1/include/c++/mingw32/bits/gthr-default.h:300: first defined here obj\Debug\src\Player.o: In function `_exchange_and_add_single': d:/codeblocks/mingw/lib/gcc/mingw32/4.8.1/include/c++/ext/atomicity.h:64: multiple definition of `DVS' obj\Debug\main.o:d:/codeblocks/mingw/lib/gcc/mingw32/4.8.1/include/c++/ext/atomicity.h:64: first defined here obj\Debug\src\Player.o: In function `_exchange_and_add_dispatch': d:/codeblocks/mingw/lib/gcc/mingw32/4.8.1/include/c++/ext/atomicity.h:80: multiple definition of `bullet1' obj\Debug\main.o:d:/codeblocks/mingw/lib/gcc/mingw32/4.8.1/include/c++/ext/atomicity.h:80: first defined here obj\Debug\src\Player.o: In function `ZN6PlayerC2Ev': D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/src/Player.cpp:6: multiple definition of `bullet2' obj\Debug\main.o:D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/main.cpp:8: first defined here obj\Debug\src\Player.o: In function `ZN6PlayerC2Ev': D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/src/Player.cpp:9: multiple definition of `text' obj\Debug\main.o:D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/main.cpp:13: first defined here obj\Debug\src\Player.o: In function `ZN6PlayerD2Ev': D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/src/Player.cpp:12: multiple definition of `tex1' obj\Debug\main.o:D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/main.cpp:17: first defined here obj\Debug\src\Player.o: In function `ZN6PlayerD2Ev': D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/src/Player.cpp:12: multiple definition of `tex2' obj\Debug\main.o:D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/main.cpp:17: first defined here obj\Debug\src\Player.o: In function `ZN6PlayerD0Ev': D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/src/Player.cpp:12: multiple definition of `mainView' obj\Debug\main.o:D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/main.cpp:17: first defined here obj\Debug\src\Player.o: In function `ZN6PlayerC2ERKS_': D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/src/Player.cpp:18: multiple definition of `secondView' obj\Debug\main.o:D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/main.cpp:23: first defined here obj\Debug\src\Player.o: In function `ZN6PlayerC2ERKS_': D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/src/Player.cpp:22: multiple definition of `miniback' obj\Debug\main.o:D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/main.cpp:59: first defined here obj\Debug\src\Player.o: In function `ZN6PlayerC2EN2sf7TextureENS0_6StringE': D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/src/Player.cpp:25: multiple definition of `bullet1pos' obj\Debug\main.o:D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/main.cpp:72: first defined here obj\Debug\src\Player.o: In function `ZN6PlayerC2EN2sf7TextureENS0_6StringE': D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/src/Player.cpp:25: multiple definition of `bullet2pos' obj\Debug\main.o:D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/main.cpp:90: first defined here obj\Debug\src\Player.o: In function `ZN6Player5cloneEv': D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/src/Player.cpp:38: multiple definition of `positions' obj\Debug\main.o:D:/Pliki G/Dokumenty/Moje Dokumenty/programowanie w c++ programy i kody źródłowe/GAME OF THE YEAR EDITION/main.cpp:106: first defined here collect2.exe: error: ld returned 1 exit status Process terminated with status 1 (0 minute(s), 1 second(s)) 26 error(s), 0 warning(s) (0 minute(s), 1 second(s))
Kody: Player.h #ifndef PLAYER_H #define PLAYER_H #include <string> #include <sstream> #include "SFML/Graphics.hpp" class Player { public: enum Direction { Left = 0, Right = 1, Up = 2, Down = 3 }; Player(); Player( sf::Texture new_player_texture, sf::String player_name ); Player * clone(); void move( Direction direct, Player sprite ); Player save( Player & copy_player ); sf::String gethealth(); sf::String getpoints(); sf::String getname(); virtual ~Player(); Player( const Player & other ); Player operator =( Player player ); private: sf::String name; sf::Sprite player_sprite; sf::Texture player_texture; long double points; long double health; const double beginning_health; const double beginning_points; Player * double_player; std::stringstream get; };
#endif
Player.cpp #include "Player.h" #include "variables_declarations.h"
Player::Player() : beginning_health( 100 ) , beginning_points( 0 ) , double_player( nullptr ) { player_texture.loadFromFile( "Player.png" ); health = beginning_health; points = beginning_points; name = sf::String( "Super People" ); }
Player::~Player() { if( double_player != nullptr ) delete double_player; }
Player::Player( const Player & other ) : beginning_health( 100 ) , beginning_points( other.beginning_points ) , double_player( nullptr ) { health = other.health; points = other.points; player_texture = other.player_texture; }
Player::Player( sf::Texture new_player_texture, sf::String player_name ) : beginning_health( 100 ) , beginning_points( 0 ) , double_player( nullptr ) { player_texture = new_player_texture; player_sprite.setTexture( player_texture ); health = beginning_health; points = beginning_points; name = player_name; }
Player * Player::clone() { double_player = new Player; double_player->health = beginning_health; double_player->points = this->points; double_player->name = this->name += " clone"; double_player->player_texture = this->player_texture; double_player->player_sprite = this->player_sprite; return double_player; }
Player Player::save( Player & copy_player ) { copy_player.health = this->health; copy_player.points = this->points; copy_player.name = this->name; copy_player.player_texture = this->player_texture; copy_player.player_sprite = this->player_sprite; return copy_player; }
void Player::move( Direction direct, Player sprite ) { if( direct == Left ) { sprite.player_sprite.move( - krok, player_sprite.getPosition().y ); } else if( direct == Right ) { sprite.player_sprite.move( krok, player_sprite.getPosition().y ); } else if( direct == Up ) { sprite.player_sprite.move( player_sprite.getPosition().x, - krok ); } else { sprite.player_sprite.move( player_sprite.getPosition().x, krok ); } }
sf::String Player::gethealth() { get >> health; return get.str(); }
sf::String Player::getname() { return name; }
sf::String Player::getpoints() { get >> points; return get.str(); }
Player Player::operator =( Player player ) { player.health = health; player.points = points; player.name = name; player.player_sprite = player_sprite; player.player_texture = player_texture; return player; }
main.cpp #include <string> #include "SFML/Graphics.hpp" #include "SFML/System.hpp" #include "variables_declarations.h"
int main() { sf::RenderWindow okno( sf::VideoMode( 600, 500, 32 ), "GAME OF THE YEAR" ); okno.setFramerateLimit( 60 ); DVS.loadFromFile( std::string( "Garfield Comic.ttf" ) ); text.setFont( DVS ); text.setString( sf::String( "Witaj w grze New Super People Forever 2014" ) ); text.setColor( sf::Color::Yellow ); text.setCharacterSize( 20 ); tex1.loadFromFile( "pociskl.png" ); tex2.loadFromFile( "pociskr.png" ); bullet1.setTexture( tex1 ); bullet2.setTexture( tex2 ); bullet1.setPosition( 100, 200 ); bullet2.setPosition( 500, 200 ); positions[ 0 ] = bullet1.getPosition(); positions[ 1 ] = bullet2.getPosition(); bullet1.setScale( 3, 3 ); bullet2.setScale( 3, 3 ); bullet1.setOrigin( 5, 3 ); bullet2.setOrigin( 5, 3 ); while( okno.isOpen() ) { while( okno.pollEvent( event ) ) { if( event.type == sf::Event::Closed ) okno.close(); if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::End ) okno.close(); if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape ) okno.close(); if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Right ) { okno.clear( sf::Color::White ); bullet2.move( krok, 0 ); if( bullet2.getPosition().x > 600 ) { bullet2.setPosition( 0, bullet2.getPosition().y ); } } if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Left ) { okno.clear( sf::Color::White ); bullet2.move( - krok, 0 ); if( bullet2.getPosition().x < 0 ) { bullet2.setPosition( 600, bullet2.getPosition().y ); } } if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Up ) { okno.clear( sf::Color::White ); bullet2.move( 0, - krok ); if( bullet2.getPosition().y < 0 ) { bullet2.setPosition( bullet2.getPosition().x, 500 ); } } if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Down ) { okno.clear( sf::Color::White ); bullet2.move( 0, krok ); if( bullet2.getPosition().y > 500 ) { bullet2.setPosition( bullet2.getPosition().x, 0 ); } } if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::RShift ) bullet2.setPosition( positions[ 1 ] ); } okno.clear( sf::Color::White ); okno.draw( bullet1 ); okno.draw( bullet2 ); okno.draw( text ); okno.display(); } return 0; }
i deklaracje zmiennych: variables_declarations.h #ifndef VARIABLES_DECLARATIONS_H #define VARIABLES_DECLARATIONS_H 0x2F
#include "SFML/Graphics.hpp" #include <vector>
sf::Event event; sf::Font DVS; sf::Sprite bullet1, bullet2; sf::Text text; sf::Texture tex1, tex2;
std::vector < sf::Vector2f > positions( 10 );
const int krok = 10;
#undef VARIABLES_DECLARATIONS_H #endif
Jeśli zakomentuję lub wyrzucę z projektu plik Player.cpp to normalnie się kompiluje. Ale wystarczy, że odkomentuję tylko dyrektywę #include lub jakiś inny fragment kodu i wywala mi ten błąd. |
|
pekfos |
» 2014-06-26 20:26:16 Zmiennych nie definiuje się w nagłówkach. #undef VARIABLES_DECLARATIONS_H
|
Wiesz co robisz..? |
|
Jacob99 Temat założony przez niniejszego użytkownika |
» 2014-06-26 20:55:36 @Pekfos Poprawiłem to i dodałem jedną zmienną do klasy Player i działa. Dzięki :) |
|
« 1 » |