• 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

Konkurs Mistrz Programowania
0 głosów
491 wizyt
pytanie zadane 18 stycznia 2018 w C i C++ przez jkdfklgdf 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,570 p.)
wybrane 23 marca 2018 przez jkdfklgdf
 
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 jkdfklgdf 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 jkdfklgdf 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,570 p.)
Skompiluj sfml u siebie. Wystarczy, ze zainstalujesz cmake-a, reszta praktycznie zrobi się sama.
komentarz 18 stycznia 2018 przez jkdfklgdf 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,570 p.)
Wybrałeś odpowiedni kompilator/IDE? Ten błąd to cały log?
komentarz 18 stycznia 2018 przez jkdfklgdf Nałogowiec (32,020 p.)

cały błąd

komentarz 18 stycznia 2018 przez criss Mędrzec (172,570 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 629 wizyt
pytanie zadane 18 września 2016 w C i C++ przez Strzep Nowicjusz (120 p.)
0 głosów
1 odpowiedź 468 wizyt

93,655 zapytań

142,575 odpowiedzi

323,097 komentarzy

63,171 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

Kursy INF.02 i INF.03
...