SFML i Visual Studio

Wstęp


W tym poradniku dowiesz się w jaki sposób należy skonfigurować SFML w wybranym przez ciebie IDE, czyli w tym wypadku Visual Studio. Bez skonfigurowania IDE projekty napisane w SFML nie będą działały. Visual Studio jest środowiskiem, które ja preferuję i z niego będę korzystał.

 

Instalacja SFML


Na początku musisz pobrać odpowiednią paczkę SFML ze strony pobierania.

Musisz pobrać paczkę odpowiednią do swojej wersji Visuala. Na przykład biblioteka skompilowana za pomocą VC++ 9 (Visual Studio 2008) nie będzie kompatybilna z VC++ 10 (Visual Studio 2010). Jeżeli nie ma paczki skompilowanej pod twoją wersję Visuala, musisz zrobić to sam. Instrukcje >>tutaj<< (link jeszcze nie działa).

Możesz rozpakować SFML w dowolnym miejscu, najlepiej jest zrobić specjalny folder na dysku, w którym będziesz trzymał biblioteki, w moim przypadku SFML’a trzymam w C:SzymonProjekty_BibliotekiSFML-2.0-rc. Oczywiście możesz kopiować za każdym razem bibliotekę SFML’a do każdego folderu z projektem, ale lepiej jest trzymać te pliki w 1 miejscu.

Tworzenie i konfigurowanie projektu


Czynności opisane poniżej będziesz musiał wykonywać za każdym razem przy tworzeniu nowego projektu w Visual Studio. Aby utworzyć projekt w SFML wejdź w File ->New Project -> Empty Project. Następnie kliknij PPM na nazwie swojego projektu (w Solution Explorer) i wybierz Add -> New item -> C++ file i nazwij go w dowolny sposób. Znowu kliknij PPM na nazwie swojego projektu i wejdź w Properties, zmień konfigurację z Debug na All configurations. We właściwościach projektu dodaj:

  • ścieżkę do plików nagłówkowych SFML (<ścieżka-do-SFML>/include) C/C++ » General » Additional Include Directories
  • ścieżkę do plików lib (<ścieżka-do-sfml>/lib) Linker » General » Additional Library Directories

Następnym krokiem jest zlikowanie twojego projektu z plikami „.lib”, które będziesz używał w swoim kodzie. SFML posiada 5 modułów (system, window, graphics, network i audio) oraz po bibliotece na każdy z nich. Nie musisz dodawać wszystkich modułów gdy np korzystasz tylko z 5 (np gdy nie korzystasz z sieci-network nie musisz dodawać tego modułu do projektu). Moduły są dodawane we właściwościach projektu w Linker » Input » Additional Dependencies.

Wymagane moduły w większości przypadków to:

sfml-graphics.lib
sfml-window.lib
sfml-system.lib

Zauważ że teraz to było dodane w konfiguracji Release, dla konfiguracji Debug musisz dodać je oddzielnie ponieważ ich nazwa nieco się różni, wyglądają one w ten sposób: sfml-nazwaModułu-d.lib.

Przedostatnim krokiem jest ustawienie sposobu linkowania plików DLL. Jeżeli chcesz aby pliki DLL były „w pliku” exe musisz użyć użyć linkowania statycznego. Statyczne biblioteki wyglądają w następujący sposób: „sfml-xxx-s-d.lib” dla Debug, oraz „sfml-xxx-s.lib” dla Release. Jeżeli chcesz je zlinkować dynamicznie, użyj SFML_DYNAMIC

Jeżeli nie znasz różnić pomiędzi linkowaniem dynamicznym, a statycznym odsyłam cię do Google’a.

Ostatnim krokiem jest przetestowanie, czy konfiguracja odbyła się w sposób prawidłowy, aby to zrobić wklej jakiś prosty przykładowy kod, np ten poniżej:

Po skompilowaniu i próbie uruchomienia prawdopodobnie dostałeś błąd o braku DLL, musisz je wkleić do folderu z kodem, znajdziesz je w folderze SFML-2.0-rcbin.

Jeżeli teraz skompilujesz kod powinieneś zobaczyć statyczne zielone koło.

Oryginalna wersja artykułu.


  • Piotrek

    Witaj, jestem początkujący ale bardzo zaciekawił mnie Twój kursy i chciałbym zacząć zabawę z tą biblioteką, jednak zrobiłem wszystko krok po kroku i msvisual ciagle wywala mi jedne błąd:
    sfml-graphics-d.lib(sfml-graphics-d-2.dll) : fatal error LNK1112: module machine type ‚x64’ conflicts with target machine type ‚X86’

    Wiesz jak temu zaradzić?
    Pozdrawiam 🙂

    • Najprawdopodobniej pobrałeś złą paczkę biblioteki, zamiast 64 bitowej wersji pobrałeś 32 bitową (lub na odwrót), aby rozwiązać problem należy pobrać odpowiednią paczkę. Napisz czy pomogło.

      Pozdrawiam

  • klawisz

    Mi też wywala błąd 1>d:bibliotekisfml-2.4.0includesfmlsystemerr.hpp(32): fatal error C1083: Cannot open include file: ‚ostream’: No such file or directory

    Wie może ktoś co na to zaradzić??