C:/MinGW/lib/libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `WinMain@16'

来源:互联网 发布:域名是做什么的 编辑:程序博客网 时间:2024/05/21 18:36

需要加 -lmingw32 

例如使用minGW32 :执行g++命令:g++ -o mysql.exe main.cpp -lmingw32 -lSDLmain -lSDL

main.cpp

#include <stdio.h>#include "SDL/SDL.h"#define WIDTH 640#define HEIGHT 480#define BPP 4#define DEPTH 32void setpixel(SDL_Surface *screen, int x, int y, Uint8 r, Uint8 g, Uint8 b){    Uint32 *pixmem32;    Uint32 colour;    colour = SDL_MapRGB( screen->format, r, g, b );    pixmem32 = (Uint32*) screen->pixels + y + x;    *pixmem32 = colour;}void DrawScreen(SDL_Surface* screen, int h){    int x, y, ytimesw;    if(SDL_MUSTLOCK(screen))    {        if(SDL_LockSurface(screen) < 0) return;    }    for(y = 0; y < screen->h; y++ )    {        ytimesw = y*screen->pitch/BPP;        for( x = 0; x < screen->w; x++ )        {            setpixel(screen, x, ytimesw, (x*x)/256+3*y+h, (y*y)/256+x+h, h);        }    }    if(SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen);    SDL_Flip(screen);}int main(int argc, char* argv[]){printf("hello world !");    SDL_Surface *screen;    SDL_Event event;    int keypress = 0;    int h=0;    if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1;    if (!(screen = SDL_SetVideoMode(WIDTH, HEIGHT, DEPTH, SDL_HWSURFACE)))    {        SDL_Quit();        return 1;    }    while(!keypress)    {        DrawScreen(screen,h++);        while(SDL_PollEvent(&event))        {            switch (event.type)            {                case SDL_QUIT:                    keypress = 1;                    break;                case SDL_KEYDOWN:                    keypress = 1;                    break;            }        }    }    SDL_Quit();    return 0;}

参数 -l (小写的L)使库文件得以与源文件一起编译和连接。(简单的可以认为-labc即连接了名称符合libabc.*的所有库文件)
最后说明的两个参数是:-mconsole 和 -mwindows
他们的效果是使可执行程序是带命令行控制窗口的或者是纯Windows窗口的,缺省情况下应该是带命令行控制窗口的。
运行mysdl.exe可以看到文件的执行情况。

0 0
原创粉丝点击