SFML C++ ERROR: LNK 1169
Main.cpp
#include <SFML/Graphics.hpp>
#include <iostream>
#include "menu.cpp"
using namespace std;
using namespace sf;
int page_number;
const int windowWidth = 800, windowHeight = 800;
int main()
{
RenderWindow window(sf::VideoMode(windowWidth, windowHeight), "game");
Menu menu(windowWidth, windowHeight - 250);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if (event.type == Event::KeyReleased)
{
switch (event.key.code)
{
case Keyboard::Up:
menu.moveUp();
break;
case Keyboard::Down:
menu.moveDown();
break;
}
// Choose Page/Choice
if (event.key.code == Keyboard::Enter)
{
switch (menu.mainMenuPressed())
{
case 0:
window.close();
page_number = 0;
break;
case 1:
window.close();
page_number = 1;
break;
case 2:
window.close();
page_number = 2;
break;
}
}
}
}
window.clear();
window.display();
}
return 0;
}
Menu.cpp
#include <SFML/Graphics.hpp>
#include "menu.h"
using namespace sf;
Menu::Menu(float width, float height)
{
if (!font.loadFromFile("assets/font/CyrilicOld.ttf")) {}
mainMenu[0].setFont(font);
mainMenu[0].setFillColor(sf::Color::Green);
mainMenu[0].setString("Play");
mainMenu[0].setCharacterSize(40);
mainMenu[0].setPosition(sf::Vector2f(width / 2 - 50, height / (Max_main_menu + 1)));
mainMenu[1].setFont(font);
mainMenu[1].setFillColor(sf::Color(123, 63, 0));
mainMenu[1].setString("Options");
mainMenu[1].setCharacterSize(40);
mainMenu[1].setPosition(sf::Vector2f(width / 2 - 50, height / (Max_main_menu + 1) * 2));
mainMenu[2].setFont(font);
mainMenu[2].setFillColor(sf::Color(123, 63, 0));
mainMenu[2].setString("Exit");
mainMenu[2].setCharacterSize(40);
mainMenu[2].setPosition(sf::Vector2f(width / 2 - 50, height / (Max_main_menu + 1) * 3));
mainMenuSelected = 0;
}
Menu::~Menu()
{
}
// Draw Main Menu
void Menu::draw(sf::RenderWindow& window)
{
for (int i = 0; i < 3; i++)
{
window.draw(mainMenu[i]);
}
}
// Move Up
void Menu::moveUp()
{
if (mainMenuSelected - 1 >= -1)
{
mainMenu[mainMenuSelected].setFillColor(sf::Color(123, 63, 0));
mainMenuSelected--;
if (mainMenuSelected == -1)
{
mainMenuSelected = 2;
}
mainMenu[mainMenuSelected].setFillColor(sf::Color::Green);
}
}
// Move Down
void Menu::moveDown()
{
if (mainMenuSelected + 1 <= Max_main_menu)
{
mainMenu[mainMenuSelected].setFillColor(sf::Color(123, 63, 0));
mainMenuSelected++;
if (mainMenuSelected == 3)
{
mainMenuSelected = 0;
}
mainMenu[mainMenuSelected].setFillColor(sf::Color::Green);
}
}
menu.h
#pragma once
#define Max_main_menu 3
class Menu
{
public:
Menu(float width, float height);
void draw(sf::RenderWindow& window);
void moveUp();
void moveDown();
int mainMenuPressed()
{
return mainMenuSelected;
}
~Menu();
private:
int mainMenuSelected;
sf::Font font;
sf::Text mainMenu[Max_main_menu];
};
Выдает ошибки:
Ошибка LNK2005
"public: void __cdecl Menu::draw(class sf::RenderWindow &)"
(?draw@Menu@@QEAAXAEAVRenderWindow@sf@@@Z) уже определен в Main.obj
Ошибка LNK1169
обнаружен многократно определенный символ - один или более
Ошибка LNK2005
"public: __cdecl Menu::~Menu(void)"
(??1Menu@@QEAA@XZ) уже определен в Main.obj
Ошибка LNK2005
"public: __cdecl Menu::Menu(float,float)"
(??0Menu@@QEAA@MM@Z) уже определен в Main.obj
Ошибка LNK2005
"public: void __cdecl Menu::moveUp(void)"
(?moveUp@Menu@@QEAAXXZ) уже определен в Main.obj
Ошибка LNK2005
"public: void __cdecl Menu::moveDown(void)"
(?moveDown@Menu@@QEAAXXZ) уже определен в Main.obj
Пожалуйста помогите
Источник: Stack Overflow на русском