未定义对“WinMain@16”的引用?

问题描述 投票:0回答:4

我查看了其他解决方案,但我不知道为什么它这么说,因为我有一个 main. 我尝试过构建控制台应用程序和 GUI 应用程序。它应该是一个 GUI 应用程序(SDL)。 头文件中的任何地方都必须有 main 吗? 出于什么原因你会有一个 main 而 main 却没有找到。

35小时后我终于认为这是最后一个错误。

我的IDE是Code Blocks,我的编译器是MinGW32。

c++ mingw sdl program-entry-point undefined-reference
4个回答
4
投票

链接时使用

-lSDLmain
-mwindows


0
投票

我将 mingw32 放在链接器的顶部,然后我可以使用常规 main。 在包含 windows.h 并获得所有额外参数后,我让 winmain 开始工作。 但为了更简单的原因我删除了它。


0
投票

我也遇到了同样的问题,而且这个问题已经存在很长一段时间了。我决定调查一下,结果发现这正是 SDL 所做的事情。在 SDL2_main.h 文件中,有一个 #define main SDL_main 会导致您的 main 函数以不同的方式运行。如果它太困扰您,您可以进入 SDL_main.h 文件并修复它。即使将其注释掉也会“修复”它,但可能会在以后的某个阶段引起问题。一般来说,使用不同版本的 SDL2 可能对您有最大帮助。 (虽然没试过)

否则,您可以使用 WinMain() 代替 main()。它将作为临时修复,编译器会抛出警告,但如果您确实想运行该程序,请使用它。


-1
投票

WinMain 是程序可能的入口点之一。

我不熟悉 Windows 上的 GCC 或“CodeBlocks”。 Microsoft 链接器的 /ENTRYPOINT 链接器选项描述了可能的入口点: http://msdn.microsoft.com/en-us/library/f9t8842e%28v=vs.110%29

如您所见,“main”用于非 unicode 控制台应用程序,而 WinMain 用于非 unicode GUI 应用程序。

在 Microsoft 链接器上,/SUBSYSTEM 选项用于决定您正在构建的应用程序类型。

有可能

  • 你必须为你的编译器做一些类似 /SUBSYSTEM 的事情,或者
  • 你必须链接一些特定于编译器的库

根据上述提示,也许您可以弄清楚该怎么做:-)

© www.soinside.com 2019 - 2024. All rights reserved.