新版本的SDL不允许我使用SDL_image

时间:2018-06-21 18:16:19

标签: c++ sdl

error message

我另外创建了2个项目。 SDL 2.0.8和SDL_image 2.0.3 上的一个。我测试过以下代码:

#include <SDL.h>
#include <SDL_image.h>
#include <cstdio>

SDL_Window * window = NULL;
SDL_Surface * windowSurface = NULL;
SDL_Renderer * renderer = NULL;

int main(int argc, char** argv)
{

    if (SDL_Init(SDL_INIT_VIDEO) < 0)
    {
        printf("Cannot init SDL. Error: %s\n", SDL_GetError());
        exit(-1);
    }
    window = SDL_CreateWindow("Client", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN);
    if (window == NULL)
    {
        printf("Cannot create window. Error: %s\n", SDL_GetError());
        exit(-1);
    }
    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
    if (renderer = NULL)
    {
        printf("Cannot create renderer. Error: %s\n", SDL_GetError());
        exit(-1);
    }
    //Init PNG loading
    if (!(IMG_Init(IMG_INIT_PNG) & IMG_INIT_PNG))
    {
        printf("Cannot init PNG loading. Error: %s\n", IMG_GetError());
        exit(-1);
    }
    windowSurface = SDL_GetWindowSurface(window);
    system("pause");
    return 0;
}

在此设置下,我无法运行它,出现了错误。

第二个项目具有 SDL 2.0.5 SDL_image 2.0.0 ,并且有效。

为什么我不能使用SDL和SDL_image的最新版本,尽管SDL_image与SDL 2.0.8兼容?

2 个答案:

答案 0 :(得分:1)

这表示您使用的标头,.lib和.dll文件之间不匹配。确保从路径中所有隐蔽的地方删除所有旧的

使用sysinternal procmon工具查看从

加载dll的确切位置

答案 1 :(得分:0)

我修复了将所有.dll文件扔到项目中的Debug文件夹中的问题。我是在Visual Studio 2017和较低版本的SDL中编写的,我不必这样做。