Неопределенная ссылка на WinMain@16 при использовании SDL

у меня было много проблем с тем, чтобы все работало, чтобы я мог начать разработку в Windows, как приложение к Linux, которое я обычно использую при кодировании. У меня довольно странная проблема при попытке скомпилировать программу SDL. Как только я включаю библиотеку SDL, программа отказывается компилироваться, давая мне эту ошибку:

c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libmingw32.a<main.o>: In function 'main':
C:MinGWmsys.0srcmingwrt/../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), я получаю ошибку, упомянутую выше

использование:

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 более.

1 ответов


Я немного искал дополнительную информацию об этой ошибке, и я нашел на этой странице которая включает в себя следующую информацию:

единственный трюк в том, чтобы скомпилировать это сейчас, - это добавить путь включения (например: - I../ SDL / include), путь компоновщика (например: - L../ SDL / lib), а затем, наконец, добавление самих библиотек в правильном порядке. Использовать:

-lmingw32 -lSDLmain -lSDL

кроме того, не забудьте добавить флаг-mwindows, если ваш IDE не добавляет его автоматически (в дополнение к любым другим библиотекам, которые вы хотите связать). Если вы не поместите их в правильном порядке, вы получите ошибку компоновщика, жалующуюся на отсутствующий символ WinMain@16.

попробуйте перекомпилировать с этими флагами выше и посмотреть, имеет ли это значение.