使用SDL时未定义对WinMain @ 16的引用

我一直有很多麻烦让一切工作,以便我可以开始在Windows上开发,就像我通常在编码时使用的Linux一样。 在尝试编译SDL程序时,我有一个相当奇怪的问题。 一旦我包含SDL库,该程序拒绝编译,给我这个错误:

c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libmingw32.a<main.o>: In function 'main': C:\MinGW\msys\1.0\src\mingwrt/../mingw/main.c:73: undefined reference to 'WinMain@16' collect2: ld returned 1 exist status 

我在控制台上使用MinGW。

举个例子,使用

 gcc -o test main.c 

这编译罚款:

 #include <stdio.h> #include <stdlib.h> int main(int argv, char **argc) { printf("Hello, world!\n"); return 0; } 

但是,只要我添加#包括(即使没有任何SDL函数被调用),我得到上面提到的错误

使用:

 gcc -o test main.c -lSDL 

这不能编译:

 #include <stdio.h> #include <stdlib.h> #include <SDL/SDL.h> int main(int argv, char **argc) { printf("Hello, world!\n"); return 0; } 

任何帮助将不胜感激! 我读到这是忘记主要function的人的一个常见问题,但显然这不是我的问题。 我也听说WinMain是处理Windowsgraphics程序时使用的主要function,但是在我以前用Windows开发时,这对我来说从来不是问题。

Solutions Collecting From Web of "使用SDL时未定义对WinMain @ 16的引用"

我做了一些关于这个错误的更多信息,我发现这个页面包含以下信息:

现在编译的唯一技巧是添加包含路径(例如:-I ../ SDL / include),链接器路径(例如:-L ../ SDL / lib),然后添加库他们正确的顺序。 使用:

 -lmingw32 -lSDLmain -lSDL 

此外,不要忘记添加-mwindows标志,如果你的IDE没有自动添加它(除了你想链接的任何其他库)。 如果你没有把它们放在正确的顺序,你会得到一个链接器错误抱怨失踪的WinMain @ 16符号。

尝试使用上面的标志重新编译,看看是否有所作为。