marc_xxx Temat założony przez niniejszego użytkownika |
Błąd kompilacji: "Multiple definition of .." » 2015-06-04 12:34:07 Witam. Zacząłem pisać jakąś prostą grę korzystając z biblioteki SFML. Podczas definicji jednego z konstruktorów kompilator wywala mi błąd "multiple definition of Menu::Menu, first defined here", i komunikat o błędzie (dotyczącym tej samej linijki) powtarza się parę razy .. o co chodzi? Jak to naprawić? Domyślam się, że błąd jest banalny, pamiętam, że kiedyś z rok temu, pisałem grę i miałem podobny błąd kompilacji i się poddałem.. :D Definicja klasy Menu: #include <SFML/Graphics.hpp> #include <SFML/System.hpp> #include <SFML/Window.hpp> #include <string>
using namespace std;
class Menu { public: Menu( string backgroundFilename, unsigned short width = 1024, unsigned short height = 768 ); ~Menu(); inline void draw( sf::RenderWindow & gameWindow ); private: sf::Texture backgroundImage; sf::Sprite background; };
Definicje funkcji składowych: #include "Menu.hpp"
Menu::Menu( string backgroundFilename, unsigned short width, unsigned short height ) { this->backgroundImage.loadFromFile( backgroundFilename ); this->background.setTexture( this->backgroundImage ); }
Menu::~Menu() { }
inline void Menu::draw( sf::RenderWindow & gameWindow ) { gameWindow.draw( this->background ); }
|
|
marc_xxx Temat założony przez niniejszego użytkownika |
» 2015-06-04 12:50:20 Ciekawe wyglądają ścieżki do plików, które pokazuje kompulator jako błąd. Najpierw jest ścieżka do mojego pliku i tam jest napisane "Multiple definition of ..", a potem druga podobna ale na początku dodane obj/Debug/main.o/... i przy tej linijce napisane jest "first defined here". Trzeba pozmieniać coś w ustawieniach kompilatora? Kompilator sam sobie stworzył jakieś pliki które dodał do projektu czy co?
|
|
darko202 |
» 2015-06-04 13:51:27 |
|
marc_xxx Temat założony przez niniejszego użytkownika |
» 2015-06-04 14:19:44 Nadal jest ten sam błąd kompilacji. Teraz plik z definicją klasy wygląda tak: #ifndef MENU_HPP #define MENU_HPP
#include <SFML/Graphics.hpp> #include <SFML/System.hpp> #include <SFML/Window.hpp> #include <string>
using namespace std;
class Menu { public: Menu( string backgroundFilename, unsigned short width = 1024, unsigned short height = 768 ); ~Menu(); inline void draw( sf::RenderWindow & gameWindow ); private: sf::Texture backgroundImage; sf::Sprite background; };
#endif
|
|
Lora |
» 2015-06-04 14:35:16 Wklej logi kompilacji. |
|
marc_xxx Temat założony przez niniejszego użytkownika |
» 2015-06-04 14:48:57 Nie wiedziałem, który konkretnie fragment wkleić i jakich znacznikó syntax użyć. Wklejam poniżej: -------------- Build: Debug in game (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -fexceptions -g -Iengine\SFML-2.3\include -c C:\Users\Marcin\Desktop\programowanie\game\main.cpp -o obj\Debug\main.o mingw32-g++.exe -Wall -fexceptions -g -Iengine\SFML-2.3\include -c C:\Users\Marcin\Desktop\programowanie\game\modules\Game.cpp -o obj\Debug\modules\Game.o mingw32-g++.exe -Wall -fexceptions -g -Iengine\SFML-2.3\include -c C:\Users\Marcin\Desktop\programowanie\game\modules\Menu.cpp -o obj\Debug\modules\Menu.o mingw32-g++.exe -Lengine\SFML-2.3\lib -o bin\Debug\game.exe obj\Debug\main.o obj\Debug\modules\Button.o obj\Debug\modules\Game.o obj\Debug\modules\Menu.o engine\SFML-2.3\lib\libsfml-audio-d.a engine\SFML-2.3\lib\libsfml-audio-s-d.a engine\SFML-2.3\lib\libsfml-graphics-d.a engine\SFML-2.3\lib\libsfml-graphics-s-d.a engine\SFML-2.3\lib\libsfml-main-d.a engine\SFML-2.3\lib\libsfml-network-d.a engine\SFML-2.3\lib\libsfml-network-s-d.a engine\SFML-2.3\lib\libsfml-system-d.a engine\SFML-2.3\lib\libsfml-system-s-d.a engine\SFML-2.3\lib\libsfml-window-d.a engine\SFML-2.3\lib\libsfml-window-s-d.a -mwindows obj\Debug\modules\Game.o: In function `ZN4MenuC2ESstt': C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:3: multiple definition of `Menu::Menu(std::string, unsigned short, unsigned short)' obj\Debug\main.o:C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:3: first defined here obj\Debug\modules\Game.o: In function `ZN4MenuC2ESstt': C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:3: multiple definition of `Menu::Menu(std::string, unsigned short, unsigned short)' obj\Debug\main.o:C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:3: first defined here obj\Debug\modules\Game.o: In function `ZN4MenuD2Ev': C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:9: multiple definition of `Menu::~Menu()' obj\Debug\main.o:C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:9: first defined here obj\Debug\modules\Game.o: In function `ZN4MenuD2Ev': C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:9: multiple definition of `Menu::~Menu()' obj\Debug\main.o:C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:9: first defined here obj\Debug\modules\Menu.o: In function `ZN4MenuC2ESstt': C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:3: multiple definition of `Menu::Menu(std::string, unsigned short, unsigned short)' obj\Debug\main.o:C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:3: first defined here obj\Debug\modules\Menu.o: In function `ZN4MenuC2ESstt': C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:3: multiple definition of `Menu::Menu(std::string, unsigned short, unsigned short)' obj\Debug\main.o:C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:3: first defined here obj\Debug\modules\Menu.o: In function `ZN4MenuD2Ev': C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:9: multiple definition of `Menu::~Menu()' obj\Debug\main.o:C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:9: first defined here obj\Debug\modules\Menu.o: In function `ZN4MenuD2Ev': C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:9: multiple definition of `Menu::~Menu()' obj\Debug\main.o:C:/Users/Marcin/Desktop/programowanie/game/modules/Menu.cpp:9: first defined here collect2.exe: error: ld returned 1 exit status Process terminated with status 1 (0 minute(s), 1 second(s)) 16 error(s), 0 warning(s) (0 minute(s), 1 second(s))
|
|
Monika90 |
» 2015-06-04 14:59:00 Pewnie w pliku Game.cpp masz #include "menu.cpp" - usuń to. |
|
marc_xxx Temat założony przez niniejszego użytkownika |
» 2015-06-04 15:08:33 Dzięki ;) |
|
« 1 » 2 3 |