c++ - programa - que es compilar y ejecutar




¿Cómo escribo un programa en C++ que se compilará fácilmente en Linux y Windows? (6)

Estoy haciendo un programa C ++.

Una de mis mayores molestias con C ++ es su supuesta independencia de plataforma.

Probablemente todos sepan que es prácticamente imposible compilar un programa Linux C ++ en Windows y uno de Windows en Linux sin una avalancha de errores crípticos y archivos de inclusión específicos de la plataforma.

Por supuesto, siempre puedes cambiar a una emulación como Cygwin y vino, pero te pregunto, ¿realmente no hay otra manera?


El lenguaje en sí es multiplataforma, pero la mayoría de las bibliotecas no lo son, pero hay tres cosas que debe tener en cuenta si quiere ir completamente multiplataforma al programar en C ++.

En primer lugar, debe comenzar a utilizar algún tipo de sistema de compilación multiplataforma, como SCons . En segundo lugar, debe asegurarse de que todas las bibliotecas que está utilizando estén diseñadas para ser multiplataforma. Y un tercer punto menor, recomendaría usar un compilador que existe en todas sus plataformas de destino, gcc viene a la mente aquí (C ++ es una bestia bastante compleja y todos los compiladores tienen sus propias peculiaridades).

Tengo algunas sugerencias adicionales sobre las interfaces gráficas de usuario para usted. Hay varios de estos disponibles para usar, los tres más notables son:

GTK + y QT son dos API que vienen con sus propios conjuntos de widgets (botones, listas, etc.), mientras que wxWidgets es más una API contenedora para el conjunto de widgets nativos de las plataformas actualmente en ejecución. Esto significa que los dos primeros pueden parecer un poco diferentes en comparación con el resto del sistema, mientras que el último se verá como un programa nativo.

Y si te gusta la programación de juegos, también hay muchas API para elegir, todas ellas también multiplataforma. Los dos más completos que conozco son:

Ambos contienen todo, desde gráficos hasta rutinas de entrada y audio, ya sea a través de complementos o incorporados.

Además, si crees que la biblioteca estándar en C ++ es un poco escasa, echa un vistazo a Boost para obtener una dulzura multiplataforma de propósito general.

Buena suerte.


C ++ es multiplataforma. El problema que parece tener es que está usando librerías dependientes de la plataforma.

Supongo que realmente está hablando sobre los componentes UI, en cuyo caso sugiero usar algo como GTK +, Qt o wxWindows, cada uno de los cuales tiene componentes de interfaz de usuario que se pueden compilar para diferentes sistemas.

La única solución es encontrar y usar librerías independientes de la plataforma.

Y, en una nota lateral, ni Cygwin ni Wine son emulaciones: son implementaciones 100% nativas de la misma funcionalidad que encontraron sus respectivos sistemas.


Cree una capa de bajo nivel que contendrá todo el código específico de la plataforma en su proyecto. Implemente 2 versiones de esta capa, una para Windows y otra para Linux, con la misma interfaz y compártalas en 2 bibliotecas. Acceda a todas las funcionalidades específicas de la plataforma en su proyecto a través de esa interfaz.

Esta capa puede contener clases generales de acceso a archivos, impresión, GUI, etc.

Todo el código (ahora no específico de la plataforma) que usa esa capa ahora se puede compilar una vez en Windows y una vez en Linux.


Se adhieren a ANSI C ++ y las bibliotecas que son multiplataforma y debería estar bien.



C ++ estándar es compilaciones de código sin errores en cualquier plataforma. Intente utilizar Bloodshed Dev C ++ en Windows (en lugar de VC ++ / Borland C ++).

Como Bloodshed Dev C ++ confirma los estándares de C ++, los programas compilados se compilarán en Linux sin errores en la mayoría de los casos.





platform