Code::Blocks undefined reference to WinMain@16

Тема в разделе "WASM.BEGINNERS", создана пользователем Zhelezka, 10 апр 2011.

  1. Zhelezka

    Zhelezka New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2008
    Сообщения:
    103
    Делаю проект от школы на языке си с использованием opengl, sdl(+sdl_image) на linux.
    На новом выступлении естественно требуется exe-шник.
    Сейчас пытаюсь скомпилировать на windows в Code::Blocks:

    Заголовки:
    Код (Text):
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <math.h>
    4. #include <string.h>
    5. #include <SDL/SDL.h>
    6. #include <SDL/SDL_image.h>
    7. #include <GL/gl.h>
    8. #include <GL/glu.h>
    9. #include <windows.h>
    10. ...
    Linker settings:
    Код (Text):
    1. mingw32
    2. glu32
    3. opengl32
    4. SDL
    5. SDL_image
    Возникает ошибка:
    Код (Text):
    1. c:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(main.o):main.c
    2. undefined reference to 'WinMain@16'
    Не работают оба варианта:
    Код (Text):
    1. /*1:*/... int main(int argc, char *argv[]){ ...
    2. /*2:*/... int WINAPI WinMain(HINSTANCE _hi, HINSTANCE _hp, LPCSTR _cp, int _CS){ ...
    По поисковикам уже искал, но пока в основном ошибки лишь добавляются
    Так при дополнении "SDLmain" к Linker settings получается ещё ошибки.
    Код (Text):
    1. undefined reference to 'SDL_strlcpy'
    2. undefined reference to 'SDL_strlcat'
    3. undefined reference to 'SDL_SetModuleHandle'
    4. undefined reference to 'SDL_main'
    5. undefined reference to 'SDL_getenv'
    6. undefined reference to 'SDL_strlcpy'
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    не пробовал
    #pragma comment(linker, "/entry:main") ?
     
  3. Zhelezka

    Zhelezka New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2008
    Сообщения:
    103
    спасибо, но это не помогло.

    Всё-таки нашёл проблему:
    надо -lSDLmain подключать перед -lSDL
    то есть просто надо-было подвинуть его в "Linker settings" выше на строчку перед "SDL".
    Не знал, что порядок важен.