【发布时间】:2026-01-09 22:20:03
【问题描述】:
我们将不胜感激。 我真的为此绞尽脑汁,太棒了。
我已经安装了 cygwin 和 Netbeans,并且已经成功地开发、编译和运行了一个小型 SDL-1.2 windows 游戏,没有任何问题。
现在问题来了,我已经安装了 SDL2 并正在尝试编译。特别是链接。
我和以前一样,将“libSDL2.a”和“libSDL2main.a”添加到我在 Netbeans 中的项目的链接器选项中;但我得到“未定义的对‘WinMain’的引用”错误
现在,我对此进行了调查,似乎链接器无法将我的 main() 函数链接到 WinMain 函数。
我看到的另一个答案是将“-lmingw32 -lSDLmain -lSDL”添加到链接器选项但我不使用 mingw,我使用的是 cygwin,什么是 mingw32.lib 的 cygwin 等效项
我想主要问题是: 如果我使用 Cygwin、SDL2 和 Netbeans,我给链接器提供了哪些选项?
任何帮助将不胜感激。
【问题讨论】:
-
无论你使用的是 MinGW、Cygwin、本机 Linux 终端还是 OSX,在命令行上的链接都是一样的。
-
好吧,所以。在 cygwin 中,当我运行这个“g++ main.cpp -lSDL2main -lSDL2”时,我得到了完全相同的“未定义的对‘WinMain’的引用”。这也与 netbeans 完全分开。
-
在 Cygwin 和 MinGW 中,库是为 POSIX 环境构建的(显然),这意味着它没有 Windows 主函数,您需要创建自己的
WinMain函数,然后调用main函数由SDL2main库提供。 -
嗯,好吧,这是 SDL2 中的新功能吗?因为我从不需要对带有 SDL1.2 的 Windows 主程序做任何事情。另外,如果这都是 posix 并且我看不到 windows main,那么为什么链接器会抱怨 WinMain 呢?
标签: c++ netbeans linker cygwin sdl-2