iOS平台使用SDL2初始化失败提示未引入SDL_main.h怎么解决
问题排查及解决步骤
- 修正头文件引入
你当前代码仅引入了SDL.h,缺少iOS平台必需的SDL_main.h头文件。SDL会通过该头文件内的宏定义将你编写的main函数重命名为SDL_main,由SDL内置的iOS平台入口逻辑调用你的业务代码,缺少该头文件时宏替换不生效,就会触发你遇到的初始化报错。
将代码开头的引入部分修改为:
#include "SDL.h" #include "SDL_main.h"
检查链接配置
打开Xcode项目配置,进入TARGETS -> Build Phases -> Link Binary With Libraries列表,确认你编译生成的libsdl2.a和libsdlmain.a都已经添加到该列表中,遗漏libsdlmain.a也会触发相同报错。检查主函数签名
你当前的主函数签名int main(int argc, char *argv[])符合SDL的要求,无需修改,注意不要随意调整主函数的参数类型、个数以及返回值类型,否则宏替换后无法匹配SDL要求的函数签名也会触发异常。补充未定义宏
你代码中使用的SCREEN_WIDTH、SCREEN_HEIGHT未做定义,后续编译前需要自行补充这两个宏的数值,设置为你需要的窗口宽高即可。
内容的提问来源于stack exchange,提问作者Jhonsusan
相关产品推荐
相关产品推荐

