Неопределенная ссылка на 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.
попробуйте перекомпилировать с этими флагами выше и посмотреть, имеет ли это значение.