我另外创建了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兼容?
答案 0 :(得分:1)
这表示您使用的标头,.lib和.dll文件之间不匹配。确保从路径中所有隐蔽的地方删除所有旧的
使用sysinternal procmon工具查看从
加载dll的确切位置答案 1 :(得分:0)
我修复了将所有.dll文件扔到项目中的Debug文件夹中的问题。我是在Visual Studio 2017和较低版本的SDL中编写的,我不必这样做。