VS2019编译报unresolved external symbol _SDL_main错误是什么原因?
VS2019 SDL项目
_SDL_main未解析外部符号错误解决方案 完整报错信息:unresolved external symbol _SDL_main referenced in function _main_getcmdline
这是Windows平台使用Visual Studio开发SDL项目的经典链接错误,可按以下顺序排查问题:
- 入口函数签名不符合要求
SDL默认会封装平台原生入口逻辑,要求开发者编写的入口函数必须严格使用int main(int argc, char* argv[])签名,使用int main()、void main()或WinMain作为入口都会触发该错误,即便不需要处理入参也要保留argc、argv两个形参。 - 链接器子系统配置不匹配
打开项目属性页,依次进入「链接器」→「系统」→「子系统」:如果是带控制台的SDL项目,选择控制台 (/SUBSYSTEM:CONSOLE);如果是无控制台的窗口类SDL项目,选择窗口 (/SUBSYSTEM:WINDOWS),不可留空或选择其他值。 - SDL主库未正确链接
进入项目属性页的「链接器」→「输入」→「附加依赖项」,确认已经添加对应版本的SDL入口库:SDL2版本对应sdl2main.lib,SDL1版本对应sdlmain.lib,同时要保证链接库的x86/x64架构和项目编译架构完全一致。 - 预处理宏配置错误
如果你需要自行控制程序入口、不使用SDL封装的入口逻辑,可在项目属性页的「C/C++」→「预处理器」→「预处理器定义」中添加SDL_MAIN_HANDLED宏,添加后无需严格遵循前述的main函数签名要求。
内容的提问来源于stack exchange,提问作者Jowy47
相关产品推荐
相关产品推荐

