我在让一切正常工作方面遇到了很多麻烦,以便我可以开始在 Windows 上进行开发,而不是在 Linux 上进行开发,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;
}
但是一旦我添加#include(即使没有调用任何SDL函数)我就会收到上面提到的错误
Using:
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;
}
任何帮助将不胜感激!我读到,对于忘记主要功能的人来说,这是一个常见问题,但显然这不是我的问题。我还听说WinMain是处理Windows图形程序时使用的主要函数,但过去当我更多地在Windows中进行开发时,这对我来说从来不是问题。
我做了一些搜索有关此错误的更多信息,我发现这一页其中包括以下信息:
现在编译它的唯一技巧是添加包含路径(例如:-I../SDL/include)、链接器路径(例如:-L../SDL/lib),然后最后添加库他们自己按正确的顺序。使用:
-lmingw32 -lSDLmain -lSDL
另外,如果您的 IDE 没有自动添加 -mwindows 标志(除了您想要链接的任何其他库之外),请不要忘记添加它。如果您没有按照正确的顺序放置它们,您将收到一个链接器错误,抱怨缺少符号 WinMain@16。
尝试使用上面的这些标志重新编译,看看是否有影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)