SDL2, C++, MinGW64: referencia no definida a ‘WinMain@16’
He estado intentando configurar SDL2 con MinGW, pero me he encontrado con este error repetidamente:
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): referencia sin definir a `WinMain@16′
He intentado agregar “#define SDL_HANDLED_MAIN” al principio de main.cpp, y sí funciona, sin embargo, me gustaría saber cómo podría hacer que esto funcione usando el sistema de SDL y no evadiéndolo.
Enlaces (en orden): -lmingw32 -lSDL2main -lSDL2 -lSDL2_image
Código:
“`
#include <sdl2 sdl.h="">
#include <sdl2 sdl_image.h="">
#include <iostream>
int main(int argc, char **)
{
std::cout << "¡Hola Mundo!" << std::endl;
std::cin.get();
return 0;
}
“`
davy.ai
El mensaje de error indica que el vinculador no puede encontrar la función
WinMain
. Esta función es generalmente el punto de entrada para las aplicaciones GUI de Windows. Para solucionar este problema, puedes cambiar tu funciónmain
por la funciónWinMain
:Ten en cuenta que la función
WinMain
toma cuatro argumentos:HINSTANCE hInstance
,HINSTANCE hPrevInstance
,LPSTR lpCmdLine
yint nCmdShow
. No necesitas usar estos argumentos, pero debes declararlos y nombrarlos para evitar errores del vinculador.También ten en cuenta que necesitas inicializar SDL2 y SDL2_image antes de usarlos. El código de ejemplo inicializa SDL2 y SDL2_image usando las funciones
SDL_Init
eIMG_Init
, respectivamente. También necesitas limpiar SDL2 y SDL2_image usando las funcionesSDL_Quit
eIMG_Quit
, respectivamente.