SFML и Visual studio
Введение
Эта статья - первое,что вы должны изучить перед использованием SFML с помощью Visual Studio IDE (компилятор Visual C++). Здесь описывается,как настроить ваши проекты SFML.
Устанавливаем SFML
Во-первых,вы должны загрузить SFML SDK со страницы загрузки.
Вы должны загрузить пакет,который соответствует вашей версии Visual C + + . Например,библиотека,собранная с помощью VC + + 9 (Visual Studio 2008) не является совместимой с VC ++ 10 (Visual Studio 2010). Если вы не нашли пакета SFML,собранного для вашей версии Visual C + + ,вы можете пересобрать SFML.
Далее вы должны разархивировать SFML куда вам будет удобно.Копировать заголовочные файлы и библиотеки в вашу папку Visual Studio не рекомендуется,лучше хранить библиотеки в их отдельной папке,особенно если вы используете несколько версий библиотеки или несколько компиляторов.
Создание и настройка проекта SFML ===
Первым делом необходимо выбрать какой тип проекта создать - вы должны выбрать "Win32 application".Мастер предложит несколько пунктов для настроек вашего проекта - выберите "Console application",если вам нужна консоль,или "Windows application",если она вам не требуется.Выберите "Empty project",если вам не требуется сгенерированный автоматически код.
Для целей этой статьи,вы должны создать main.cpp и добавить его в проект,теперь мы будем иметь доступ к настройкам C++(в ином случае Visual Studio не будет знать какой язык будет использоваться в этом проекте).Далее вы увидите,какой код мы напишем в этом файле.
Теперь нам требуется сообщить компилятору - где располагаются заголовочные файлы SFML(файлы .hpp) и линкеру - где располагаются библиотеки SFML (файлы .lib).
В свойствах проекта добавьте:
Путь к заголовочным файлам SFML (<sfml-install-path>/include) в C/C++ » General » Additional Include Directories
Путь к библиотекам SFML (<sfml-install-path>/lib) в Linker » General » Additional Library Directories
Эти пути одинаковы в режиме Debug и Release,поэтому установите их глобально для вашего проекта("All configurations").
http://xgm.ru/files/283/118376/start-vc-paths.png
Следующим шагом будет линковка к вашему проекту необходимых вам библиотек SFML (файлов .lib).SFML состоит из 5 модулей (system, window, graphics, network and audio) и одной библиотеки для каждого из них.
Библиотеки должны быть добавлены в свойствах проекта,в Linker » Input » Additional Dependencies.Добавьте все библиотеки SFML,которые вам требуются,например " sfml-graphics.lib", " sfml-window.lib" и " sfml-system.lib".
http://xgm.ru/files/283/118376/start-vc-link-libs.png
Важно прилинковать библиотеку,соответствующую конфигурации - "sfml-xxx-d.lib" для Debug и "sfml-xxx.lib" для Release.Неправильное сочетание может привести к ошибкам.
Согласно показанным здесь настройкам ваш проект будет прилинкован к динамической версии SFML,которая требует DLL-файлы.Если вы хотите избавиться от этих DLL-файлов и иметь SFML напрямую встроенную в ваш .exe-файл,вы должны прилинковать статическую версию.Статические библиотеки SFML имеют "-s" суффикс - "sfml-xxx-s-d.lib" для Debug и "sfml-xxx-s.lib" для Release.Также вы должны определить макрос SFML_STATIC в опциях препроцессора вашего проекта.
http://xgm.ru/files/283/118376/start-vc-static.png
Если вы не знаете разницы между динамической и статической библиотекой и не знаете какую использовать,вы можете найти о них подробную информацию в Google.
Ваш проект готов,так давайте же добавим немного кода,чтобы убедиться что он работает.Добавьте этот код в ваш файл main.cpp:
#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; }
Если вы при создании проекта выберете "Windows application",тогда точкой входа кода будет функция "WinMain" вместо "main".Из-за специфики Windows,ваш код не будет компилироваться на Linux или Mac OS X,SFML дает возможность сохранить стандартную точку входа "main" следующим образом: прилинкуйте ваш проект к главному модулю SFML(" sfml-main-d.lib" в Debug, " sfml-main.lib" в Release),таким же образом прилинкуйте sfml-graphics, sfml-window и sfml-system.
Теперь скомпилируйте проект и если вы прилинковали к динамической версии SFML,не забудьте скопировать DLL-файлы SFML (они находятся в <sfml-install-path/bin>) в директорию,где находится ваш .exe файл.Затем запустите его и если всё в порядке,вы увидите это:
http://xgm.ru/files/283/118376/start-vc-app.png
Если вы используете модуль sfml-audio,вы должны также скопировать DLL-файлы соответствующей библиотеки - libsndfile-1.dll и OpenAL32.dll.Их можно найти по пути <sfml-install-path/bin>.
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]