Vel*_*vix 9 c windows sdl winmain
我一直在努力使一切正常工作,以便我可以开始在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
Run Code Online (Sandbox Code Playgroud)
我在控制台上使用MinGW.
举个例子,使用
gcc -o test main.c
Run Code Online (Sandbox Code Playgroud)
编译好:
#include <stdio.h>
#include <stdlib.h>
int main(int argv, char **argc)
{
printf("Hello, world!\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是只要我添加#include(即使没有调用任何SDL函数),我也会收到上面提到的错误
使用:
gcc -o test main.c -lSDL
Run Code Online (Sandbox Code Playgroud)
这无法编译:
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
int main(int argv, char **argc)
{
printf("Hello, world!\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!我读到这对于忘记了主要功能的人来说是一个常见的问题,但显然这不是我的问题.我还听说WinMain是处理Windows图形程序时使用的主要功能,但是过去我曾经在Windows中进行更多开发时这对我来说从来都不是问题.
小智 15
我做了一些关于此错误的更多信息,我发现这个页面包含以下信息:
现在编译的唯一技巧是添加包含路径(例如:-I ../ SDL/include),链接器路径(例如:-L ../ SDL/lib),然后最后添加库他们自己的顺序正确.使用:
-lmingw32 -lSDLmain -lSDL
Run Code Online (Sandbox Code Playgroud)
另外,如果您的IDE没有自动添加(除了您想要链接的其他库之外),请不要忘记添加-mwindows标志.如果你没有按正确的顺序排列它们,你会得到一个链接器错误抱怨丢失的符号WinMain @ 16.
尝试重新编译上面的那些标志,看看是否有所作为.
| 归档时间: |
|
| 查看次数: |
23749 次 |
| 最近记录: |