SomeRandomMan Ответов: 1

Как исправить эти ошибки, даже если я правильно ссылаюсь на функцию?


Вот код:
Двигатель.ч

#ifndef _ENGINE_H
#define _ENGINE_H

#include <SFML\Graphics.hpp>

class Engine
{
private:
	//SFML Render Window
	sf::RenderWindow* window;

	//Initializes the engine
	bool Init();
	//Main Game Loop
	void MainLoop();
	//Renders one frame
	void RenderFrame();
	//Processes user input
	void ProcessInput();
	//Updates all Engine internals
	void Update();

public:
	Engine();
	~Engine();

	void Go();					//Starts the engine
};

#endif



Engine.cpp
include "Engine.h"
#include <SFML\Graphics.hpp>

Engine::Engine()
{

}

Engine::~Engine()
{

}

bool Engine::Init()
{
	window = new sf::RenderWindow(sf::VideoMode(800, 600, 32), "RPG");

	if(!window)
		return false;

	return true;
}

void Engine::RenderFrame()
{

}

void Engine::ProcessInput()
{
	sf::Event evt;
	//Loop through all window events
	while(window->pollEvent(evt))
	{
		if(evt.type == sf::Event::Closed)
			window->close();
	}
}

void Engine::Update()
{

}

void Engine::MainLoop()
{
	//Loop until our window is closed
	while(window->isOpen())
	{
		ProcessInput();
		Update();
		RenderFrame();
	}
}

void Engine::Go()
{
	if(!Init())
		throw "Could not initialize Engine";

	MainLoop();
}


и Main.cpp
#include <Windows.h>

#include "Engine.h"

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
	Engine* engine = new Engine();

	try
	{
		engine->Go();
	}
	catch(char* e)
	{
		MessageBoxA(NULL, e, "Exception Occured", MB_OK | MB_IConerror);
	}
}



Ошибки:
||=== Build: Debug in Game Engine (compiler: GNU GCC Compiler) ===|
obj\Debug\Engine.o||In function `ZN6Engine4InitEv':|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|17|undefined reference to `_imp___ZN2sf9VideoModeC1Ejjj'|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|17|undefined reference to `_imp___ZN2sf6StringC1EPKcRKSt6locale'|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|17|undefined reference to `_imp___ZN2sf12RenderWindowC1ENS_9VideoModeERKNS_6StringEjRKNS_15ContextSettingsE'|
obj\Debug\Engine.o||In function `ZN6Engine12ProcessInputEv':|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|31|undefined reference to `_imp___ZN2sf6Window9pollEventERNS_5EventE'|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|37|undefined reference to `_imp___ZN2sf6Window5closeEv'|
obj\Debug\Engine.o||In function `ZN6Engine8MainLoopEv':|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|47|undefined reference to `_imp___ZNK2sf6Window6isOpenEv'|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|47|undefined reference to `_imp___ZN2sf6Window9pollEventERNS_5EventE'|
obj\Debug\Engine.o||In function `ZN6Engine12ProcessInputEv':|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|37|undefined reference to `_imp___ZN2sf6Window5closeEv'|
obj\Debug\Engine.o||In function `ZN6Engine2GoEv':|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|59|undefined reference to `_imp___ZNK2sf6Window6isOpenEv'|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|59|undefined reference to `_imp___ZN2sf6Window9pollEventERNS_5EventE'|
obj\Debug\Engine.o||In function `ZN6Engine12ProcessInputEv':|
C:\Users\dento\Desktop\Game Engine\Engine.cpp|37|undefined reference to `_imp___ZN2sf6Window5closeEv'|
c:\mingw\bin\..\lib\gcc\mingw32\4.9.3\..\..\..\libmingw32.a(main.o):(.text.startup+0xa0)||undefined reference to `WinMain@16'|
||error: ld returned 1 exit status|
||=== Build failed: 13 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|


просто заметил в ошибках, что некоторые из них находятся в файле .o. Как я это исправлю?

Что я уже пробовал:

Я пытался изменить имена, я пытался найти то, что он говорит, что я не ссылался, кроме того, что я не знаю, что попробовать.

Patrice T

В engine.cpp вы предоставили не тот, который генерировал сообщения об ошибках.

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

SomeRandomMan

Когда я компилирую его, он выдает ошибки в строках 17 (3 ошибки), 31 (1 ошибка), 37 (2 ошибки), 47 (2 ошибки), 59 (2 ошибки) и udefined ссылку на @WinMain16 (Примечание: все выданные ошибки являются неопределенными ссылками). Я просмотрел его дважды и не видел никаких причин для того, чтобы он выбрасывал ошибки.

Patrice T

Engine.cpp строка 17 пуста !
В engine.cpp вы предоставили не тот, который генерировал сообщения об ошибках.

1 Ответов

Рейтинг:
1

Jochen Arndt

Вы не связываетесь с требуемыми библиотеками. Проверьте настройки вашего проекта, если все необходимые библиотеки включены.

Вы также можете получить лучшую помощь на форумах SFML: Форумы сообщества SFML-индекс[^].

Но сначала проверьте существующие вопросы. Они могут решить вашу проблему. Эта нить, которая может помочь: Ошибка сборки; " неопределенная ссылка на.."[^]