[已解决] VS QT FFmpeg SDL 出现 “error LNK2019: 无法解析的外部符号 main,函数 WinMain 中引用了该符号”错误(使用SDL2库的注意事项)
问题
VS QT FFmpeg SDL 出现 “error LNK2019: 无法解析的外部符号 main,函数 WinMain 中引用了该符号”错误(使用SDL2库的注意事项)
解答:
SDL2 在 Windows 平台上通常会重定义 main(将 main 重命名为 SDL_main),并要求链接 SDL2main 库来提供真正的入口点。
如果项目中同时使用了 Qt 的入口处理(qtmaind.lib 提供 WinMain 的实现)和 SDL2 的入口处理,就可能出现链接器找不到 main 的问题。解决方法可能包括:
-
定义 SDL_MAIN_HANDLED
如果项目并不依赖 SDL2 的入口重定向,可以在包含 SDL2 头文件前定义宏SDL_MAIN_HANDLED,以避免 SDL2 重定义 main。 -
调整链接库
检查是否同时链接了 SDL2main 和 QtMain 库,考虑移除不必要的库或者调整链接顺序,确保入口点由 Qt 提供。 -
检查包含顺序与预处理设置
确保 SDL2 相关头文件的包含顺序不会影响 main 函数的定义,避免宏重定义导致名称改变。
个人解决方法
main函数前使用#undef main;
或
- 在
main.cpp文件最前面使用SDL_MAIN_HANDLED宏。

浙公网安备 33010602011771号