未定义对"WinMain"的引用:使用 Cygwin、SDL2 和 Netbeans 时

undefined reference to `WinMain' : When using Cygwin, SDL2 and Netbeans

本文关键字:SDL2 Netbeans Cygwin WinMain 引用 未定义 使用      更新时间:2023-10-16

如有任何帮助,我们将不胜感激。我真的为此绞尽脑汁了,sooo。

我已经安装了cygwin和Netbeans,并成功地设计、编译和运行了一个小型SDL-1.2 windows游戏,没有任何问题。

现在问题来了,我已经安装了SDL2并正在尝试编译。特别是链接。

我和以前一样,在Netbeans中的项目链接器选项中添加了"libSDL2.a"answers"libSDL2main.a";但我得到了"未定义的引用‘WinMain’"错误

现在,我研究了一下,链接器似乎无法将我的main()函数链接到WinMain函数。

我看到的一个答案是在链接器选项中添加"-lming32-lSDLmain-lSDL",但我不使用mingw,我使用cygwin,什么是与mingw32.lib 等效的cygwin

我想主要问题是:如果我使用Cygwin、SDL2和Netbeans,我给链接器的选项是什么?

任何帮助都将不胜感激。

您是否在main前面使用#undef main进行了测试?

/*
* If 'main' is defined we clear that definition
* to get our default 'main' function back.
*/
#ifdef main
# undef main
#endif /* main */
int main(int argc, char** argv)
{
// ...
return 0;
}

将Netbeans与Cygwin和SDL(包括SDL.h)一起使用会产生奇怪的错误


也可能有帮助:

我得到"未定义的引用"WinMain@16'">

在Visual C++下,您需要链接SDL2main.lib。在包括Dev-C++在内的gcc构建环境下,您需要链接"sdl-config--libs"的输出,通常为:-lmingw32-lSDL2main-lSDL2-mwindows

(http://wiki.libsdl.org/FAQWindows#I_get_.22Undefined_reference_to_.27WinMain.4016.27.22)

对于我刚刚用Cygwin构建的库,我添加了以下编译器标志:

-shared -Wl,--out-implib,lib$(LIB_NAME).dll.a

这使我能够在没有可怕的"缺少WinMain"错误消息的情况下构建我的库。