Compilar aplicaciones nativas de Windows (C/C++) en Ubuntu (WSL, Windows Subsystem Linux) y MSYS2
Requisitos
APT
sudo apt install mingw-w64 binutils-mingw-w64 binutils-mingw-w64-x86-64 g++ g++-mingw-w64 -y
PACMAN
pacman -S mingw-w64-x86_64-gcc mingw-w64-cross-binutils
Código Fuente
Ejecutable
Si el código fuente se guarda con codificación ANSI, se pueden mostrar acentos.//test.cpp #include <windows.h> int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int respuesta = MessageBox ( NULL,//Owner "¡Hola, Mundo! :V\n\ráéíóú",//Mensaje (Cuerpo) "Prueba", //Título MB_ICONINFORMATION | MB_YESNO | MB_DEFBUTTON1 //Apariencia ); return respuesta == MB_OK ? ERROR_SUCCESS : ERROR_GEN_FAILURE; }
Ícono (opcional)
//app.rc APP_ICON ICON "app.ico"
Compilación
Ícono (Opcional)
Debe de compilarse antes que el ejecutable.x86_64-w64-mingw32-windres app.rc -O coff -o app.resCon MSYS2 podemos quitar el prefijo x86_64-w64-mingw32-
windres app.rc -O coff -o app.res
Ejecutable
Si queremos que nuestro ejecutable tenga un ícono, agregamos el archivo .res que compilamos del ícono.Usamos el parámetro mwindows para indicar que se genere una aplicación GUI en lugar de consola.
x86_64-w64-mingw32-g++ -mwindows -o test.exe test.cpp app.res
g++ -mwindows -o test.exe test.cpp app.res
Resultado
Referencias
- http://retroshare.sourceforge.net/wiki/index.php/Ubuntu_cross_compilation_for_Windows
- https://stackoverflow.com/questions/708238/how-do-i-add-an-icon-to-a-mingw-gcc-compiled-executable
- https://github.com/therecipe/qt/wiki/Setting-the-Application-Icon
- https://www.systutorials.com/docs/linux/man/1-x86_64-w64-mingw32-gcc/
- https://docs.microsoft.com/es-mx/windows/win32/api/winuser/nf-winuser-messagebox?redirectedfrom=MSDN
- https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-