2009-05-14 12 views
8

Trabajo en un equipo de desarrolladores, uno de nosotros trabaja específicamente en Windows, y trabajo principalmente en Mac OS X. Estamos con ganas de desarrollar aplicaciones basadas en C, ya sea en C++ o Objective-C, sin embargo, no estoy realmente bien informado sobre cómo llevar a cabo un proyecto de desarrollo multiplataforma.-cruz de la plataforma de Objective-C/C++ Desarrollo

¿Es viable trabajar en C++ con Mac OS X? Obviamente, están orientados hacia Objective-C, pero existe tanto apoyo para C++. ¿Y el desarrollo multiplataforma en estos idiomas? Usaría algo como boost y algún tipo de biblioteca de UI.

¿Alguien ha tenido alguna experiencia en el desarrollo de múltiples plataformas, pero permite que las aplicaciones se ejecuten de forma nativa sin la necesidad de una VM?

EDIT: Hay muchas respuestas que quiero marcar como correctas ahora. Parece que Qt es el camino a seguir y desarrollarlo en C++. Lo más probable es que sea para * nix, OS X y Windows, por lo que sería la mejor opción para nosotros personalmente. Si puedo evitar escribir Objective-C para que el equipo se adhiera a C++, entonces será mucho mejor. Si tengo que escribir la GUI en Objective-C y mezclar y combinar, tampoco me molestará demasiado.

Respuesta

10

You could look at Qt. Lo he usado con éxito en proyectos de Windows, Linux y Mac OSX.

+0

Esta es probablemente la publicación más simple que tiene sentido :) – Kezzer

1

¿Es viable para trabajar en C++ usando Mac OS X? Obviamente, están orientados hacia Objective-C, pero existe tanto apoyo para C++.

Sí, la hay.

Puede hacer casi cualquier cosa que desee con C++ en OS X --anything que usted podría hacer con C++ en Linux, por ejemplo. Se admite el compilador C++ de gcc, las bibliotecas C++ y todo. Xcode proporciona soporte para trabajar con C++.

Incluso puede mezclar C++ con Objective-C con Objective-C++ (Tenga en cuenta, sin embargo, que esto no es portátil para el trabajo GUI).

¿Qué pasa con el desarrollo multiplataforma en estos idiomas? Usaría algo como boost y algún tipo de biblioteca de UI.

yo creo que lo mejor es QT.

Es una biblioteca C++ estable que es multiplataforma (Windows, OSX, Linux y más), ha existido por más de una década, está bien soportada, con muchas aplicaciones comerciales escritas en ella (Skype, Adobe Photoshop Album) y un montón de cosas de código abierto escritas con él (el escritorio de KDE para principiantes). Además de cosas de GUI, proporciona mucho más (clases de contenedor, xml, conectividad de base de datos, etc.).

Puede desarrollar aplicaciones de código abierto y de propiedad (de código cerrado) de forma gratuita con el último QT, y la biblioteca fue comprada recientemente por NOKIA, una gran multinacional, por lo que no va a desaparecer en el corto plazo.

Además de la biblioteca, QT también viene con un IDE y un Visual Forms Designer (todo gratis).

También existen otras bibliotecas de GUI multiplataforma para C++ para OS X (wxWidgets, gtkmm, et al).

+0

wxWidget en Mac OS X logra hacer GUI simples con botones y campos bastante bien, pero una aplicación con todas las funciones se sentirá muy no Maccish con wxWidgets. El diálogo de fuente es un ejemplo. – dreamlax

11

Trabajo para una compañía de software que produce software para Mac OS X y Windows usando C++, MFC y Objective-C.

Sí, definitivamente es posible.

Probablemente será mejor si desarrolla el "núcleo" de la aplicación en C++. En una aplicación MVC, la parte C++ sería el modelo, y posiblemente los controladores. Para el código que se relaciona con la GUI y otras interfaces específicas del sistema operativo, debe usar las API nativas: Objective-C en Mac OS X y C# en Windows XP.

Lo bueno de la Mac es que puede compilar C++ y Objective-C juntos. Incluso puede tener Objective-C++ donde C++ y Objective-C se compilan en la misma unidad de compilación. Desafortunadamente no puedes hacer esto con C# (hay algo llamado Managed C++ que es una bestia diferente).

Evitaría frameworks multiplataforma como Qt y wxWidgets. Ambos le permiten desarrollar aplicaciones multiplataforma, pero la apariencia de esas aplicaciones es inferior a la media. Aunque estoy más familiarizado con wxWidgets, su diseño está muy orientado hacia el paradigma de diseño de aplicaciones de Windows MFC.

EDIT 1-4 mayo 2009, 09:44 AM EST: Si Qt permite ahora verdadera apariencia de la plataforma nativa, que podría ser una buena opción. No he revisado la última oferta, por lo que es posible que desee consultar el marco antes de diseñar el suyo. Esa decisión debe tomarse después de examinar los resultados de las aplicaciones y qué tan cómodo se siente con los paradigmas de diseño que requiere Qt.

+2

En realidad, Qt ahora puede integrarse con Cocoa, por lo que el aspecto y la sensación podrían ser absolutamente los mismos. – Hejazzman

+0

Básicamente estamos en la misma página ;-) –

+0

¿Las mentes geniales piensan igual? ¿Lo mismo? :) –

4

lo que uso, es tener una biblioteca común escrita en C o C++ con toda la funcionalidad principal de su aplicación.

Digamos que estás construyendo un juego de solitario. Por lo tanto, tendrá clases principales en una biblioteca pura de C++ (principalmente independiente de la plataforma).

  • CoreSolitaire

A continuación, tendrá proyectos de interfaz de usuario separados, uno para cada plataforma en la que desea implementar su solitario en:

  • iSolitaire (Objective-C, MultiTouch cacao base para iPhoneOS)
  • MacSolitaire (Objective-C, Cocoa basado en Mac OS X)
  • WinSolitaire (C++, Win32 o C# Basado en Windows plaf ORMS)
  • GSolitaire (C++, GNOME/GTK basado en Linux/Unix)

Es más trabajo, pero, en mi opinión, el producto resultante es definitivamente mejor que uno se puede conseguir mediante el uso de una plataforma independiente widget establecido como QT o wxWidgets.

Habiendo dicho esto, si va a implementar su producto internamente en una compañía donde tiene control total del entorno de despliegue, y no le importa mucho cómo se comportará el producto resultante en diferentes plataformas, definitivamente podría usar una API común para todo (QT, wxWidgets, o cualquier otro que pueda encontrar).

+1

En realidad, QT parece absolutamente nativo en Windows y Linux (compatibilidad con KDE o tema GNOME). Y con la integración Cocoa-QT, puede usar QT y también tener una GUI Cocoa para Mac, con un poco más de trabajo. Beats usando 3 diferentes toolkits de UI. – Hejazzman

0

¿alguien tiene alguna experiencia en el desarrollo de para múltiples plataformas sin embargo permiten que las aplicaciones se ejecuten de forma nativa sin la necesidad de una máquina virtual?

Ligeramente. Asegúrese de ajustar todo el código específico de la plataforma. De esta manera su aplicación principal o biblioteca no necesita hacer referencia al código específico de la plataforma. Eso debería hacer que sea mucho más fácil cuando se transfiere a otra plataforma.

Cuestiones relacionadas