Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Wczytywanie tekstury

Ostatnio zmodyfikowano 2017-08-03 15:40
Autor Wiadomość
Manualist
Temat założony przez niniejszego użytkownika
[SFML] Wczytywanie tekstury
» 2017-08-02 19:20:51
Witam, podczas nauki biblioteki SFML z kursu z niniejszej strony napotkałem problem przy wczytywaniu tekstury. Przy próbie kompilacji przykładowego kodu z lekcji "Wczytywanie tekstur i rysowanie sprajtów" Code::Blocks wyświetla mi komunikat
undefined reference to `_imp___ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4RectIiEE'
 Obrazek znajduje się w katalogu, w którym jest projekt Code::Blocks'a. Próbowałem zmienić katalog roboczy poprzez wejście w Project->Properties...->Build targets i zmianę ścieżki w polu "Execution working dir" z kropki na ścieżkę katalogu, w którym znajduje się plik projektu C::B, podobnie zrobiłem w zakładce "Release". Niestety, bez efektu. Podanie ścieżki zaczynającej się od litery dysku też nie działa. Czy wie ktoś, gdzie leży problem? Piszę na Windowsie.
P-163780
marcolo2307
» 2017-08-02 21:58:55
To jest błąd kompilacji, nie ma związku z obrazkiem... Źle zalinkowałeś bibliotekę.
P-163787
Manualist
Temat założony przez niniejszego użytkownika
» 2017-08-02 23:10:27
Przejrzałem ponownie lekcję o konfiguracji biblioteki i wydaje mi się, że zrobiłem wszystko tak, jak kazano. Kod, dzięki któremu autor kursu zaleca sprawdzić poprawność konfiguracji działa mi bez problemu. Chciałbym się jednak upewnić, czy pliki z rozszerzeniem .dll powinny być przekopiowane do katalogu z projektem (właśnie tutaj je przekopiowałem) czy do katalogu, w którym pojawia się plik .exe? Czy zdanie " Zanim zaczniesz wprowadzać ustawienia zgodnie z opisem znajdującym się w niniejszym paragrafie, zaznacz konfigurację nadrzędną dla trybu Debug oraz trybu Release w otwartym oknie dialogowym " oznacza, że w oknie Project->Build options... w miejscu "Policy:" należy wybrać "Append[...]" ? Czy mógłby ktoś doprecyzować, gdzie szukać źródła problemu, ewentualnie wskazać jakieś inne źródło w celu sprawdzenia poprawności konfiguracji biblioteki?
P-163791
marcolo2307
» 2017-08-02 23:18:51
Pliki .dll muszą znajdować się obok .exe. Błędy "undefined reference" to błędy linkera, źle zalinkowałeś bibliotekę lub masz nieodpowiednią wersję. Skoro poprzedni kod ci działał, to ten też powinien. Może nie zalinkowałeś modułu graphics (sfml-graphics[-d])? Pamiętaj, że bibliotekę linkujesz na nowo za każdym razem, gdy tworzysz nowy projekt.
P-163792
Manualist
Temat założony przez niniejszego użytkownika
» 2017-08-02 23:46:54
Zalinkowałem wszystkie wymienione w kursie moduły, wszystko piszę w mainie projektu, który konfigurowałem. Jaka sciężka powinna być wpisana w Project->Properties...->Build targets , pole "Execution working dir" dla Debug i Release? Gdzie mogę sprawdzić wersję biblioteki? Wcześniej uczyłem się programować w c++ na nowszej wersji kompilatora, ale wcześniej wspomniany kod-tester nie działał. Pobrałem więc TDM 4.9.2 ze strony SFML-a, pogrzebałem coś w C::B tak, że kod-tester zadziałał. Może gdzieś tutaj coś popsułem? Czy błąd ten może mieć związek z linkowaniem statycznym?
P-163793
marcolo2307
» 2017-08-03 00:51:05
Linkujesz statycznie? Jeśli tak, to wtedy musisz linkować wszystkie biblioteki, których używa SFML. Na razie lepiej sobie odpuść.

https://www.sfml-dev.org​/tutorials/2.4/start-cb.php
Tutaj masz wszystko wyjaśnione. Prościej się nie da.
P-163794
Manualist
Temat założony przez niniejszego użytkownika
» 2017-08-03 15:40:46
Uff, udało się, już działa. Zreinstalowałem C::B (tym razem z dołączonym kompilatorem TDM), pobrałem SFML 2.0 i skonfigurowałem ponownie projekt słowo w słowo z kursem. Dziękuję za pomoc.

EDIT: Działa także dla SFML 2.4.2
P-163799
« 1 »
  Strona 1 z 1