[已解决] 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 函数的定义,避免宏重定义导致名称改变。

个人解决方法

  1. main 函数前使用 #undef main ;

  1. main.cpp 文件最前面使用 SDL_MAIN_HANDLED 宏。
posted @ 2025-03-19 16:23  BryceAi  阅读(202)  评论(0)    收藏  举报