Reputation: 650
This simple code that perfectly works on Ubuntu crashes with a segmentation fault on my Raspberry Pi v3:
#include "SDL2/SDL.h"
#include "SDL2/SDL_image.h"
int main()
{
char* artworkPath = "./testfile.png";
if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
{
SDL_Log("SDL fails to initialize video subsystem!\n%s", SDL_GetError());
return -1;
}
else
printf("SDL correctly initialized!\n");
if((IMG_Init(IMG_INIT_PNG)&IMG_INIT_PNG) != IMG_INIT_PNG)
printf("IMG_Init: %s\n", IMG_GetError());
else
printf("Fine!\n");
SDL_Surface* artworkSurface = IMG_Load(artworkPath);
if (artworkSurface == NULL)
{
printf("Error on loading PNG image\n");
return -1;
}
else
return 0;
}
Error on loading PNG image is never shown because it crashes during loading with a segmentation fault, any idea?
Upvotes: 0
Views: 363
Reputation: 650
SOLUTION
There are bugs on libpng 1.2.50 and 1.6.36 that prevent to correctly load the image.
SDL Image library installs its own dependencies of such library, the correct/only way to use SDL Image on Raspberry Pi is to compile libpng and SDL library from source.
So, download libpng16 (from GitHub) and SDL2_image-2.0.5 (from official site) source code, compile (libpng as first) and install them. In this way you'll find on your system libpng 1.6.38.git that doesn't have this problem
Upvotes: 1