SFML и C++ Уроки \ Разработка игр › Форумы › SFML System, Window и другие вопросы › Ошибки при компиляции релизной версии
В этой теме 16 ответов, 7 участников, последнее обновление Павел Букреев 7 года/лет, 11 мес. назад.
-
АвторСообщения
-
Я почитал туториал, подключил -s либы
выставил SFML_STATIC
в общем, сделал вроде бы все как полагается
тем не менее, выдает одну ошибку при компиляции:
“error LNK2001: unresolved external symbol “public: static class sf::RenderStates const sf::RenderStates::Default” (?Default@RenderStates@sf@@2V12@B)”
возможно, кто-то знает, как решить эту проблемуУ меня было то-же самое. Справился так:
В компиляторе прописать всё как на официальном сайте, но в препроцессоре вместо SFML_STATIC прописываем SFML_DYNAMIC.В папке sfml скопировать папку lib и вставить в папку lib твоего компилятора у меня путь такой C:/program files(86)/Microsoft Visual Studio 12.0/VC/lib.
В папке sfml скопировать папку include и вставить в папку include твоего компилятора
C:/program files(86)/Microsoft Visual Studio 12.0/VC/includeВ папке sfml есть папка bin оттуда скопировать все .dll и положить в папку system у меня это C:/window/system плюс все скопированные .dll положить в папку debug твоего проекта(рядом с exe). У меня это С:/User/ Alexandr/Documents/Visual Studio 2013/projekts/SFML_уроки/debug/.
Может есть способ попроще но мне помог только этот.
Если подключать динамически, то на другом компе вроде бы не будет работать :/
Благодарю)
Не знаю, заработает ли на другом ПК, но хотя бы скомпилировалось)заработало! благодарю)
Вы проверили на разных ПК и всё работает?
По поводу работы на других ПК вот фрагмент моей переписки
Сообщение от cefasolin
Мне сказали, что: “Если вместо _STATIC подключать динамически, то на другом компе вроде бы не будет работать :/”
Это так???</div>Если подключаешь статические либы (-s), то dll не нужны, которые ты:
< Сообщение от cefasolin </div>
скопировать все .dll и положить в папку system у меня это C:/window/system плюс все скопированные .dll положить в папку debug твоего проекта(рядом с exe).</div>Если подключаешь динамические либы (без -s), то нужно dll таскать с exe, при переносе на другой комп.
да, работает
теперь понялМолодцы) прикреплю к первому уроку по настройке эту тему
Либы имеют три категории d, s , и просто .lib
Для того чтобы убрать dll ки нужно в разделе Компоновщик; Ввод прописать все либы(все что есть в папке либ!!!) с препиской( Для релиз версии просто -s.lib)(Для дебаг версии s-d.lib) и закинуть их в папку с проектом где лежит main.cpp.
В препроцессоре прописать SFML_STATIC.
Почему все либы а не 3 -4(по крайне мере у меня так ) ? Каждая либа тянет за собой другую. Но libsndfile-1.dll и openal32.dll должны быть обязательно !
Извиняюсь если выше об это писали ))
http://www.sfml-dev.org/tutorials/2.2/start-vc.php Полный список иерархии либов (листать вниз ).
я сначала так и пытался делать
но тогда выходила ошибка, указанная в начале темы#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
//Для этих библиотек потребовалось вписать
sfml-graphics-s.lib
sfml-window-s.lib
sfml-system-s.lib
sfml-audio-s.lib
opengl32.lib
winmm.lib
gdi32.lib
ws2_32.lib
glew.lib
freetype.lib
jpeg.lib
openal32.lib
sndfile.lib
// Возможно есть и лишние, но у меня работаетЯ тоже попробовал – работает. Видимо, я там где-то в написании ошибся или что-то такое
Если что, готовый openal32.dll http://fixdll.ru/dll/20-file-openal32-dll-skachat-besplatno.html тут качал. Это я к тому что если у вас вдруг улетит исходник, его можно всегда найти в интернете)
Видать здесь методы для 2.2 описаны. Что делать для SFML 2.3.2? Некоторых библиотек здесь нет уже. Игра в релизе компилится, но подлагивает. И у других людей не запускается.
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.