一、进入
SDL官网
下载SDL2.0 Development Library(Visual C++ 32/64bit)。因为Development Library里已经包含了对应的Runtime Binary,所以不需要再单独下载Rumtime Binary。
二、解压刚刚下载的文件:“SDL2-devel-2.0.5-VC.zip”到指定文件夹,如“D:\SDL2-devel-2.0.5-VC”。
三、打开VS2017,依次点击“文件”->“新建”->“项目”->“Visual C++”->“空项目“(可以自定义项目名称及路径,名称默认为“Project1”)-> ”确定“。
四、在左侧“解决方案资源管理器”中,找到刚刚建立的项目“Project1”,双击展开。在展开的列表中找到“源文件”,右键单击“源文件”->“添加”->“新建项”->“Visual C++”->“C++ 文件(.cpp)”,更改文件名(如:“main.cpp”),单击“添加”。
五、编辑main.cpp,输入测试代码:
#include <SDL.h>
int main(int argc, char *argv[]) // main函数头必须这样写,因为SDL把main定义成了宏
{
SDL_Delay(3000); // 让窗口在屏幕上保持3000毫秒,避免运行时窗口一闪而过
SDL_Quit();
return 0;
}
六、按Ctrl+F5编译,编译报错:
main.cpp(1): fatal error C1083: 无法打开包括文件: “SDL.h”: No such file or directory
原因:没有把SDL头文件目录添加到编译器的头文件查找路径。
解决:
1. 在左侧“解决方案资源管理器”中,右键单击刚刚建立的项目“Project1”。
2. 点击弹出的菜单中最下面的“属性”,弹出“Project1属性页”窗口。
3. 单击左侧“VC++目录”,单击右侧“包含目录”,单击该行右侧下拉箭头 ->“编辑”,弹出“包含目录”窗口。
4. 双击“包含目录”窗口最上面的空白窗格第一行,单击该行右侧按钮“…”。
5. 在弹出的资源管理器的地址栏中输入:“D:\SDL2-devel-2.0.5-VC\SDL2-2.0.5\include”(这是解压SDL得到的路径,如有需要自行修改)。
6. 单击“选择文件夹”,回到“包含目录”窗口,单击“确定”,回到“Project1属性页”窗口,单击“应用”,单击“确定”。
七、按Ctrl+F5编译,链接报错:
1>LINK : fatal error LNK1561: 必须定义入口点
原因:SDL把main定义成了宏:
#define main SDL_main
所以链接器找不到main函数,即默认的程序入口点。
解决:
1. 同第六步1,2两小步。
2. 双击左侧“链接器”,在展开列表中单击“高级”。
3. 在右侧第一行“入口点”中输入“WinMainCRTStartup”。
4. 单击“确定”。
八、按Ctrl+F5编译,链接报错:
1>main.obj : error LNK2019: 无法解析的外部符号 _SDL_Delay,该符号在函数 _SDL_main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 _SDL_Quit,该符号在函数 _SDL_main 中被引用
1>MSVCRTD.lib(exe_winmain.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用
原因:没有链接SDL指定的静态库。
解决:
1. 在main.cpp开头插入如下两行:
#pragma comment(lib, "x86/SDL2.lib")
#pragma comment(lib, "x86/SDL2main.lib")
现在的main.cpp源码:
#pragma comment(lib, "x86/SDL2.lib")
#pragma comment(lib, "x86/SDL2main.lib")
#include <SDL.h>
int main(int argc, char *argv[]) // main函数头必须这样写,因为SDL把main定义成了宏
{
SDL_Delay(3000); // 避免运行时窗口一闪而过,让窗口在屏幕上保持3000毫秒
SDL_Quit();
return 0;
}
2.参照第六步把“D:\SDL2-devel-2.0.5-VC\SDL2-2.0.5\include”添加到“包含目录”的步骤,把“D:\SDL2-devel-2.0.5-VC\SDL2-2.0.5\lib”添加到“库目录”。
九、按Ctrl+F5,运行报错:
由于找不到SDL2.dll,无法继续执行代码。重新安装程序可能会解决此问题。
原因:缺少SDL要求的动态链接库文件。
解决:
1. 在VS2017中左侧“解决方案资源管理器”中,右键单击项目“Project1”。
2. 在弹出的菜单中单击“在文件资源管理器中打开文件夹”。
3. 在弹出资源管理器的地址栏中输入“..\”(相对路径),进入上层目录。
4. 双击“Debug”文件夹,确认其中有“Project1.exe”,如果没有,那就是进错文件夹了。
5. 打开“D:\SDL2-devel-2.0.5-VC\SDL2-2.0.5\lib\x86”文件夹,复制其中的“SDL2.dll”到第4步中打开的“Debug”文件夹。
十、回到VS2017,按Ctrl+F5,成功运行。