@Gotenks

Что делать если линковщик ругается на «неразрешённый внешний символ»?

код
#include <SFML/Graphics.hpp>

int main()
{
	sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
	sf::CircleShape shape(100.f);
	shape.setFillColor(sf::Color::Green);

	while (window.isOpen())
	{
		sf::Event event;
		while (window.pollEvent(event))
		{
			if (event.type == sf::Event::Closed)
				window.close();
		}

		window.clear();
		window.draw(shape);
		window.display();
	}

	return 0;
}
вывод компилятора
1>------ Сборка начата: проект: Game1, Конфигурация: Debug Win32 ------
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall sf::String::String(char const *,class std::locale const &)" (??0String@sf@@QAE@PBDABVlocale@std@@@Z) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (??0VideoMode@sf@@QAE@III@Z) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall sf::Window::close(void)" (?close@Window@sf@@QAEXXZ) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: bool __thiscall sf::Window::isOpen(void)const " (?isOpen@Window@sf@@QBE_NXZ) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: bool __thiscall sf::Window::pollEvent(class sf::Event &)" (?pollEvent@Window@sf@@QAE_NAAVEvent@2@@Z) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall sf::Window::display(void)" (?display@Window@sf@@QAEXXZ) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall sf::Color::Color(unsigned char,unsigned char,unsigned char,unsigned char)" (??0Color@sf@@QAE@EEEE@Z) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: virtual __thiscall sf::Shape::~Shape(void)" (??1Shape@sf@@UAE@XZ) в функции "public: virtual __thiscall sf::CircleShape::~CircleShape(void)" (??1CircleShape@sf@@UAE@XZ)
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall sf::Shape::setFillColor(class sf::Color const &)" (?setFillColor@Shape@sf@@QAEXABVColor@2@@Z) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall sf::CircleShape::CircleShape(float,unsigned int)" (??0CircleShape@sf@@QAE@MI@Z) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall sf::RenderTarget::clear(class sf::Color const &)" (?clear@RenderTarget@sf@@QAEXABVColor@2@@Z) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall sf::RenderTarget::draw(class sf::Drawable const &,class sf::RenderStates const &)" (?draw@RenderTarget@sf@@QAEXABVDrawable@2@ABVRenderStates@2@@Z) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall sf::RenderWindow::RenderWindow(class sf::VideoMode,class sf::String const &,unsigned int,struct sf::ContextSettings const &)" (??0RenderWindow@sf@@QAE@VVideoMode@1@ABVString@1@IABUContextSettings@1@@Z) в функции _main
1>Game1.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: virtual __thiscall sf::RenderWindow::~RenderWindow(void)" (??1RenderWindow@sf@@UAE@XZ) в функции _main
1>Game1.obj : error LNK2001: неразрешенный внешний символ ""public: static class sf::RenderStates const sf::RenderStates::Default" (?Default@RenderStates@sf@@2V12@B)"
1>Game1.obj : error LNK2001: неразрешенный внешний символ ""public: static class sf::Color const sf::Color::Green" (?Green@Color@sf@@2V12@B)"
1>E:\CPP\SFML-2.5.1\lib\sfml-graphics.lib : warning LNK4272: тип компьютера библиотеки "x64" конфликтует с типом целевого компьютера "x86"
1>E:\CPP\SFML-2.5.1\lib\sfml-window.lib : warning LNK4272: тип компьютера библиотеки "x64" конфликтует с типом целевого компьютера "x86"
1>E:\CPP\SFML-2.5.1\lib\sfml-system.lib : warning LNK4272: тип компьютера библиотеки "x64" конфликтует с типом целевого компьютера "x86"
1>E:\CPP\Game1\Debug\Game1.exe : fatal error LNK1120: неразрешенных внешних элементов: 16
1>Сборка проекта "Game1.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Хотя мне говорили то что скрин никому тут не нужен, прикладываю его сюда, чтобы в случае если я опять сделал что то не так, вы могли посмотреть ситуацию которая происходит на моём экране. Надеюсь за изображение спрятанное в спойлер вы ругаться не будете.
скрин моего окна
5c3771a9c5ccc006908736.jpeg
скрины настроек проекта
5c3774679c9c2166958393.jpeg5c3774724f09d763404812.jpeg5c37747a12f66659349924.jpeg

P. S. Я понял что тут что то не так с разрядностью библиотек, но что именно не знаю. Подскажите пожалуйста.
  • Вопрос задан
  • 4413 просмотров
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Вы подключили x64 библиотеку, а собираете x32 проект, естественно компилятору это не нравится.
Подключите x32 версию библиотеки, или собирайте проект как x64.
На самом деле можно делать обе версии и в каждой задать использование правильной версии библиотеки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы