wxWidgets en una aplicación de consola en Windows

Estos días he estado haciendo pruebas con wxWidgets, ya comenté lo del reto de cargar un bitmap, pues mi código ahora lo estuve tratando de compilar en Windows (la razón por la que decidí usar wxWidgets es que es multiplataforma).

Ahora, yo quería tener activada la consola, ya que para mí es muy práctico ir mostrando mensajes en ella conforme se ejecuta la aplicación (para localizar errores), y, tras varios intentos, lo conseguí (usando Dev-C++ y MS Visual C++ Express).

Usando Dev-C++

Aquí, es muy fácil, simplemente, en las opciones del proyecto, cambiamos este parámetro del enlazador:

-Wl,–subsystem,windows

por esto:

-Wl,–subsystem,console

Y no es necesario cambiar el tipo de proyecto :D.

Nota: estoy usando el Devpak descargado desde las actualizaciones de Dev-C++, los parámetros al compilador y enlazador ya están configurados en el Template incluído.

Microsoft Visual C++ Express

Aquí, hay que moverle un poquito al código, aunque nada del otro mundo.
Empezamos creando el proyecto pero seleccionando una aplicación de consola, después agregamos los directorios de include, lib y las dependencias al igual que como cuando configuramos una aplicación para Windows.

Si compiláramos en este momento, el enlazador nos mostraría un error sobre una referencia no definida a la función ‘main’. Esto lo arreglamos colocando el siguiente código en el archivo principal de nuestra aplicación:


// Con esto se consigue activar la consola.
int main( int argc, char* argv[] ) {
return WinMain(
::GetModuleHandle( NULL ),
NULL,
( LPSTR )::GetCommandLine(),
SW_SHOWNORMAL
);
}

El cast a LPSTR del tercer parámetro se debe a que compilé en Unicode.

Espero le sea de utilidad a alguien ;).

Leave a Reply