首先向雷神,雷霄骅致敬。

记忆裂痕.jpeg
上一篇文章中我们讲到了sdl的配置,然后有些小伙伴说自己按照步骤一点一点配置,但是出了一些错误,然后也没找到解决方案。
其实问题的原因是由于这个项目是从2010移植过来的,2015的一些头文件做了重新的编译,需要让我们重新设置一下,所以本篇文章就是来说明下sdl库配置的注意事项
当然前提是你已经把头文件 、lib文件、dll文件已经完成的考进去了,并且做了如下设定,下面的一些截图就是步骤:
1、将需要的头文件、库文件、dll文件复制到自己的项目中

需要的文件.png

已经复制进去了.png
2、配置相关信息
首先配置C/C++C--常规--附加包含目录 配置成"include"

常规-附加包含目录配置成include.png
然后配置 链接器--常规--附加库目录 配置成"lib"

链接器-常规配置附加库目录.png
然后配置 链接器--输入--附加依赖项 配置"SDL2.lib;SDL2main.lib;legacy_stdio_definitions.lib;"

链接器-输入配置附加依赖项.png
注意,是这三项

注意这里我配置了三个.png
3、头部添加一些代码

代码补充.png
// sdl_player.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
extern "C"{
#include "SDL2/SDL.h"
}
/*
* 当libjpeg-turbo为vs2010编译时,vs2015下静态链接libjpeg-turbo会链接出错:找不到__iob_func,
* 增加__iob_func到__acrt_iob_func的转换函数解决此问题,
* 当libjpeg-turbo用vs2015编译时,不需要此补丁文件
*/
#if _MSC_VER>=1900
#include "stdio.h"
_ACRTIMP_ALT FILE* __cdecl __acrt_iob_func (unsigned);
#ifdef __cplusplus
extern "C"
#endif
FILE* __cdecl __iob_func(unsigned i) {
return __acrt_iob_func(i);
}
#endif /* _MSC_VER>=1900 */
int main(int argc,char* argv[])
{
if (SDL_Init(SDL_INIT_VIDEO)) {
printf("Could not initialize SDL -%s\n", SDL_GetError());
}
else {
printf("Success init sdl");
}
return 0;
}
这样,只要重新生成解决方案,调试就可以了。