• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SFML klasa Image błąd w zapisie obrazu do pliku

Object Storage Arubacloud
0 głosów
215 wizyt
pytanie zadane 18 stycznia 2018 w C i C++ przez Milesq Nałogowiec (32,020 p.)

Prosty kod

#include<windows.h>
#include<SFML/Graphics.hpp>

using namespace std;
using namespace sf;

int main() {
Image img;
img.create(30, 30, Color::Black);
for(int a=8;a<20;a++)
{
   img.setPixel(a, a, Color::White);
}
img.saveToFile("img.png");
system("pause");
return 0;
}

cała biblioteka działa dobrze tylko przy tej funkcji jest problem, dlaczego?

wersja biblioteki- 2.4.2

kompilator mingw32

IDE code block

błąd 

||=== Build: Debug in SFML (compiler: GNU GCC Compiler) ===|
obj\Debug\main.o||In function `main':|
main.cpp|48|undefined reference to `sf::Image::saveToFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 2 second(s)) ===|

błąd mówi że nie widzi  tej funkcji

tymczasem code blocks w podpowiedziach pokazuje ją

co mogło się stać?

1 odpowiedź

+1 głos
odpowiedź 18 stycznia 2018 przez criss Mędrzec (172,590 p.)
wybrane 23 marca 2018 przez Milesq
 
Najlepsza

Linkujesz statycznie czy dynamicznie? Jeśli statycznie, to spróbuj jak będzie przy dynamicznym.
Pliki nagłówkowe sfml i binarki sfml na pewno pochodzą z tej samej wersji?
Linkujesz właściwie libki do danej konfiguracji (Debug/Release)?
(dwa ostatnie pytania troche desperackie, mało prawdopodobne, żeby to sprawiało problemy nawet jeśli)

Znalazłem też takie coś. Cytuje:

If you get linker errors about undefined references to symbols that involve types in the std::__cxx11 namespace or the tag [abi:cxx11] then it probably indicates that you are trying to link together object files that were compiled with different values for the _GLIBCXX_USE_CXX11_ABI macro. This commonly happens when linking to a third-party library that was compiled with an older version of GCC. If the third-party library cannot be rebuilt with the new ABI then you will need to recompile your code with the old ABI.

(src) 

Spróbuj wyłączyć c++11 (i wyższe). SFML jest pisany w c++03 i z taką flagą pewnie zostały skompilowane binarki których używasz i z tego wynikają problemy. W każdym razie cokolwiek by się nie stało - zawsze najlepiej jeśli samodzielnie skompilujesz sfml dokładnie tym samym kompilatorem z którym będziesz używać sfml.

błąd mówi że nie widzi  tej funkcji

tymczasem code blocks w podpowiedziach pokazuje ją

Edytor nie ma żadnego związku z kompilacją czy linkowaniem. 

komentarz 18 stycznia 2018 przez Milesq Nałogowiec (32,020 p.)
Więc tak faktycznie trochę desperacko ;), nie widzę żadnego powodu dla którego mogłoby nie działać zwłaszcza że reszta działa i działała. Linkuję dynamicznie.

wyłączę C++11 zobaczymy...
komentarz 18 stycznia 2018 przez Milesq Nałogowiec (32,020 p.)
hmm nie działa. spróbuję pobrać nowszą wersję SFML'a
1
komentarz 18 stycznia 2018 przez criss Mędrzec (172,590 p.)
Skompiluj sfml u siebie. Wystarczy, ze zainstalujesz cmake-a, reszta praktycznie zrobi się sama.
komentarz 18 stycznia 2018 przez Milesq Nałogowiec (32,020 p.)
A jak już mam cmake zainstalowanego to co mam zrobić?

jak wchodzę w cmake to do pierwszego inputa ""where is the source code"" a do tego drugiego jakiś folder na pulpicie

potem wszystko zostawiam jak jest i naciskam "generate" i dostaję błąd

error in configuration proccess, project files may be invalid
komentarz 18 stycznia 2018 przez criss Mędrzec (172,590 p.)
Wybrałeś odpowiedni kompilator/IDE? Ten błąd to cały log?
komentarz 18 stycznia 2018 przez Milesq Nałogowiec (32,020 p.)

cały błąd

komentarz 18 stycznia 2018 przez criss Mędrzec (172,590 p.)
Nie jest cały, widze ze jest zescrollowane w dół, ale nieważne.. Widze też "Current Generator: Visual Studio 15 2017 Win64". I widze też, że napisałeś, że korzystasz z c::b i mingw.

Podobne pytania

0 głosów
3 odpowiedzi 442 wizyt
pytanie zadane 18 września 2016 w C i C++ przez Strzep Nowicjusz (120 p.)
0 głosów
1 odpowiedź 270 wizyt

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...