SDL2:IMG_Load() - Raspberry Pi 上的分段错误

SDL2: IMG_Load() - Segmentation fault on Raspberry Pi

这个在 Ubuntu 上完美运行的简单代码在我的 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;
}

加载 PNG 图像时出错 从未显示,因为它在加载过程中因分段错误而崩溃,知道吗?

解决方案

libpng 1.2.50 和 1.6.36 存在错误,无法正确加载图像。

SDL Image 库安装它自己的此类库的依赖项,correct/only 在 Raspberry Pi 上使用 SDL Image 的方法是从源代码编译 libpng 和 SDL 库。

所以,下载libpng16(来自GitHub)和SDL2_image-2.0.5(来自官方网站)源代码,编译(首先是 libpng)并安装它们。这样你就会在你的系统上找到 libpng 1.6.38.git 没有这个问题