Наш ассоциированный член www.Bikinika.com.ua

SFML та Visual studio

Цей підручник є першим, який слід прочитати, якщо ви використовуєте SFML з IDE Visual Studio (компілятор Visual C ++). Це пояснить, як налаштувати ваші проекти SFML.

По-перше, потрібно завантажити SFML SDK з сторінку завантаження .

Ви повинні завантажити пакет, який відповідає вашій версії Visual C ++. Дійсно, бібліотека, складена з VC ++ 10 (Visual Studio 2010), не сумісна, наприклад, з VC ++ 12 (Visual Studio 2013). Якщо для вашої версії Visual C ++ не зібраний пакет SFML, вам доведеться це зробити побудуйте SFML самостійно .

Потім ви можете розпакувати архів SFML, де завгодно. Копіювання заголовків і бібліотек у вашу установку Visual Studio не рекомендується, краще зберігати бібліотеки у своєму окремому місці, особливо якщо ви маєте намір використовувати кілька версій однієї бібліотеки або декілька компіляторів.

Перше, що потрібно зробити - це вибрати, який проект створити. Рекомендується вибрати "Порожній проект". Діалогове вікно пропонує кілька інших варіантів налаштування проекту: виберіть "Консольна програма" або "Додаток Windows", лише якщо ви знаєте, як використовувати попередньо складені заголовки.
Для цього підручника слід створити файл main.cpp і додати його до проекту, щоб ми мали доступ до налаштувань C ++ (інакше Visual Studio не знає, якою мовою ви користуєтесь для цього проекту ). Ми пояснимо, що поставити всередину пізніше.

Тепер нам потрібно сказати компілятору, де знайти заголовки SFML (.hpp-файли), а також лінкер, де знайти бібліотеки SFML (.lib-файли).

У властивості проекту додайте:

  • Шлях до заголовків SFML ( <sfml-install-path> / включити ) до C / C ++ »Загальне» Додаткові включення каталогів
  • Шлях до бібліотек SFML ( <sfml-install-path> / lib ) до Linker »Загальне» Додаткові каталоги бібліотек

Ці контури однакові і в конфігурації налагодження та випуску, тому ви можете встановити їх у всьому світі для свого проекту ("Усі конфігурації").

Ці контури однакові і в конфігурації налагодження та випуску, тому ви можете встановити їх у всьому світі для свого проекту (Усі конфігурації)

Наступним кроком є ​​підключення програми до бібліотек SFML (файлів .lib), які знадобляться вашому коду. SFML складається з 5 модулів (система, вікно, графіка, мережа та аудіо), і є одна бібліотека для кожного з них.
Бібліотеки повинні бути додані у властивості проекту, у Linker »Input» Додаткові залежності. Додайте всі бібліотеки SFML, які вам потрібні, наприклад "sfml-graphics.lib", "sfml-window.lib" та "sfml-system.lib".

lib

Важливо посилання на бібліотеки, які відповідають конфігурації: "sfml-xxx-d.lib" для налагодження та "sfml-xxx.lib" для випуску. Погана суміш може призвести до збоїв.

Наведені тут налаштування призведе до того, що ваша програма буде пов’язана з динамічною версією SFML, тією, якій потрібні файли DLL. Якщо ви хочете позбутися цих DLL-файлів і SFML безпосередньо інтегрований у свій виконуваний файл, вам потрібно посилання на статичну версію. Статичні бібліотеки SFML мають суфікс "-s": "sfml-xxx-sd.lib" для налагодження та "sfml-xxx-s.lib" для випуску.
У цьому випадку вам також потрібно буде визначити макрос SFML_STATIC у параметрах препроцесора вашого проекту.

Починаючи з SFML 2.2, при статичному зв’язуванні вам доведеться також пов’язати всі залежності SFML і з вашим проектом. Це означає, що якщо ви, наприклад, пов'язуєте sfml-window-s.lib або sfml-window-sd.lib, вам також доведеться зв’язати opengl32.lib, winmm.lib та gdi32.lib. Деякі з цих бібліотек залежностей вже можуть бути перелічені у розділі "Успадковані значення", але додавання їх знову самостійно не повинно викликати проблем.

Ось залежності кожного модуля, додайте -d, як описано вище, якщо ви хочете зв'язати бібліотеки налагодження SFML:

Модульні залежності sfml-graphics-s.lib

  • sfml-window-s.lib
  • sfml-system-s.lib
  • opengl32.lib
  • freetype.lib

sfml-window-s.lib

  • sfml-system-s.lib
  • opengl32.lib
  • winmm.lib
  • gdi32.lib

sfml-audio-s.lib

  • sfml-system-s.lib
  • openal32.lib
  • flac.lib
  • vorbisenc.lib
  • vorbisfile.lib
  • vorbis.lib
  • ogg.lib

sfml-network-s.lib

  • sfml-system-s.lib
  • ws2_32.lib

sfml-system-s.lib

Можливо, ви помітили з таблиці, що модулі SFML також можуть залежати один від одного, наприклад, sfml-graphics-s.lib залежить як від sfml-window-s.lib, так і sfml-system-s.lib. Якщо ви статично посилаєтесь на бібліотеку SFML, переконайтеся, що ви посилаєтесь на залежності відповідної бібліотеки, а також залежності залежностей тощо. Якщо чогось у ланцюжку залежностей відсутнє, ви отримаєте помилки лінкера.

Якщо ви трохи розгублені, не хвилюйтесь, цілком нормально, щоб початківці були завалені всією цією інформацією щодо статичного зв'язку. Якщо щось у вас не виходить з першого разу, ви можете просто намагатися завжди мати на увазі сказане вище. Якщо ви все ще не можете отримати статичні посилання на роботу, ви можете перевірити це FAQ і форум для ниток про статичне з'єднання.

Якщо ви не знаєте відмінностей між динамічною (також називається спільною) і статичною бібліотеками, і не знаєте, яку саме використовувати, ви можете шукати додаткову інформацію в Інтернеті. Є багато хороших статей / блогів / публікацій про них.

Ваш проект готовий, давайте зараз напишемо якийсь код, щоб переконатися, що він працює. Помістіть наступний код у файл main.cpp:

#include <SFML / Graphics.hpp> int main () {sf :: Вікно візуалізації (sf :: VideoMode (200, 200), "SFML працює!"); sf: форма CircleShape (100.f); shape.setFillColor (sf :: Колір :: Зелений); while (window.isOpen ()) {sf :: Подія події; while (window.pollEvent (подія)) {if (event.type == sf :: подія :: закрито) window.close (); } window.clear (); window.draw (форма); window.display (); } повернути 0; }

Якщо ви вирішили створити проект "Додаток Windows", точку введення коду має бути встановлено на "WinMain" замість "основного". Оскільки це специфічно для Windows, і ваш код, отже, не компілюється в Linux або macOS, SFML надає спосіб зберегти в цьому випадку стандартну "основну" точку входу: прив’язати ваш проект до головного модуля sfml ("sfml-main-d .lib "у налагодженні," sfml-main.lib "у випуску), тим самим способом ви пов’язали sfml-графіку, sfml-window та sfml-систему.

Тепер компілюйте проект, і якщо ви зв'язали динамічну версію SFML, не забудьте скопіювати DLL -файли SFML (вони знаходяться в <sfml-install-path / bin> ) в каталог, де знаходиться ваш компільований виконуваний файл. Запустіть його, і якщо все працює, ви повинні побачити це:

Якщо ви використовуєте sfml-аудіомодуль (незалежно від того, статично чи динамічно), ви також повинні скопіювати DLL потрібної йому зовнішньої бібліотеки, яка є OpenAL32.dll.
Ці файли можна знайти і в <sfml-install-path / bin> .

Новости