Plattformübergreifende Objective-C / C ++ Entwicklung

8

Ich arbeite in einem Team von Entwicklern, einer von uns arbeitet speziell unter Windows und ich arbeite hauptsächlich in Mac OS X. Wir wollen C-basierte Anwendungen entweder in C ++ oder Objective-C entwickeln, bin ich aber nicht wirklich erfahren in einem plattformübergreifenden Entwicklungsprojekt.

Ist es möglich in C ++ mit Mac OS X zu arbeiten? Offensichtlich sind sie auf Objective-C ausgerichtet, unterstützen C ++ aber genauso gut. Wie sieht es mit der plattformübergreifenden Entwicklung in diesen Sprachen aus? Ich würde etwas wie Boost und eine Art UI-Bibliothek verwenden.

Hat jemand Erfahrung in der Entwicklung für mehrere Plattformen und kann Anwendungen trotzdem nativ ausführen, ohne dass eine VM benötigt wird?

BEARBEITEN : Es gibt viele Antworten, die ich jetzt als richtig markieren möchte. Es scheint, als ob Qt der Weg ist, um es in C ++ zu entwickeln. Die Wahrscheinlichkeit ist groß, dass dies für * nix, OS X und Windows der Fall sein wird, was für uns persönlich die beste Option wäre. Wenn ich es vermeiden kann, Objective-C zu schreiben, dann bleibt das Team bei C ++, umso besser. Wenn ich die GUI in Objective-C schreiben und mischen und abgleichen muss, dann ist das auch nicht zu viel Mühe.

    
Kezzer 14.05.2009, 13:09
quelle

5 Antworten

10

Sie könnten sich Qt ansehen . Ich habe es erfolgreich in Windows, Linux und Mac OSX Projekten verwendet.

    
itsmatt 14.05.2009, 13:16
quelle
11

Ich arbeite für ein Softwareunternehmen, das Software für Mac OS X und Windows mit C ++, MFC und Objective-C erstellt.

Ja, es ist definitiv möglich.

Sie werden wahrscheinlich am besten bedient, wenn Sie den "Kern" der Anwendung in C ++ entwickeln. In einer MVC-Anwendung wäre der C ++ - Teil das Modell und möglicherweise die Controller. Für den Code, der mit der GUI und anderen Betriebssystem-spezifischen Schnittstellen verbunden ist, sollten Sie die nativen APIs verwenden: Objective-C unter Mac OS X und C # unter Windows XP.

Das Gute am Mac ist, dass Sie C ++ und Objective-C zusammen kompilieren können. Sie können sogar Objective-C ++ verwenden, wobei C ++ und Objective-C in derselben Kompilierungseinheit kompiliert werden. Leider können Sie das nicht mit C # (es gibt etwas namens Managed C ++, das ist ein anderes Biest).

Ich würde plattformübergreifende Frameworks wie Qt und WxWidgets vermeiden. Mit ihnen können Sie plattformübergreifende Anwendungen entwickeln, aber das Erscheinungsbild solcher Anwendungen ist unterdurchschnittlich. Ich kenne wxWidgets zwar besser, das Design orientiert sich jedoch stark am Windows MFC-Paradigma des Anwendungsdesigns.

Edit May 14, 2009, 9:44 AM EST: Wenn Qt jetzt true für die native Plattform zulässt, könnte dies eine gute Option sein. Ich habe mir das neueste Angebot noch nicht angesehen, daher sollten Sie sich diesen Rahmen ansehen, bevor Sie Ihren eigenen entwerfen. Diese Entscheidung sollte getroffen werden, nachdem Sie die Ergebnisse der Anwendungen untersucht haben und wie komfortabel Sie mit den von Qt benötigten Design-Paradigmen sind.

    
Lyndsey Ferguson 14.05.2009 13:21
quelle
4

Was ich benutze, ist eine gemeinsame Bibliothek in C oder C ++ mit allen Kernfunktionen Ihrer Anwendung.

Nehmen wir an, Sie bauen ein Solitaire-Spiel. So haben Sie Kern-Klassen in einer reinen C ++ (meist plattformunabhängigen) Bibliothek.

  • CoreSolitaire

Dann haben Sie separate UI-Projekte, eines für jede Plattform, auf der Sie Ihr Solitaire implementieren möchten:

  • iSolitaire (Objective-C, MultiTouch Kakao basiert für iPhoneOS)
  • MacSolitaire (Objective-C, Kakao-basiert für Mac OS X)
  • WinSolitaire (C ++, Win32 oder C # basiert auf Windows-Plattformen)
  • GSolitaire (C ++, GNOME / GTK basiert auf Linux / Unix)

Es ist mehr Arbeit, aber meiner Meinung nach ist das resultierende Produkt definitiv besser als eines, das Sie mit einem plattformunabhängigen Widget wie QT oder wxWidgets .

Wenn Sie das Produkt intern in einem Unternehmen bereitstellen, in dem Sie die vollständige Kontrolle über die Implementierungsumgebung haben und Sie sich nicht so sehr dafür interessieren, wie sich das resultierende Produkt auf verschiedenen Plattformen verhält, können Sie dies tun Verwenden Sie definitiv eine gemeinsame API für alles (QT, wxWidgets oder andere, die Ihnen möglicherweise begegnen).

    
Pablo Santa Cruz 14.05.2009 13:25
quelle
1

Ist es möglich, in C ++ mit Mac OS X zu arbeiten? Offensichtlich sind sie auf Objective-C ausgerichtet, aber es gibt genauso viel Unterstützung für C ++.

Ja, da ist es.

Sie können mit C ++ in OS X so ziemlich alles machen, was Sie wollen - alles, was Sie mit C ++ unter Linux tun können. Es gibt Unterstützung für den C ++ - Compiler, C ++ - Bibliotheken und alle anderen. Xcode bietet Unterstützung für die Arbeit mit C ++.

Sie können sogar C ++ mit Objective-C mit Objective-C ++ mischen (Beachten Sie jedoch, dass dies nicht für die GUI-Arbeit portierbar ist).

Was ist mit der plattformübergreifenden Entwicklung in diesen Sprachen? Ich würde etwas wie Boost und eine Art UI-Bibliothek verwenden.

Ich glaube, dass Ihre beste Wette QT ist.

Es ist eine stabile C ++ - Bibliothek, die plattformübergreifend ist (Windows, OSX, Linux und mehr), seit über einem Jahrzehnt existiert, gut unterstützt wird und viele kommerzielle Anwendungen enthält (Skype, Adobe Photoshop Album) und eine Tonne Open-Source-Material, das damit geschrieben wurde (der KDE-Desktop für Anfänger). Neben GUI-Sachen bietet es eine ganze Menge mehr (Container-Klassen, XML, Datenbank-Konnektivität, etc.).

Sie können sowohl Open Source als auch proprietäre (closed source) Apps kostenlos mit dem neuesten QT entwickeln, und die Bibliothek wurde kürzlich von NOKIA gekauft, einem großen multinationalen Unternehmen, so dass es nicht so bald verschwinden wird.

>

Neben der Bibliothek enthält QT auch eine IDE und einen Visual Forms Designer (alles kostenlos).

Andere plattformübergreifende GUI-Bibliotheken für C ++ gibt es auch für OS X ( wxWidgets , gtkmm , ua).

    
Hejazzman 14.05.2009 13:19
quelle
0
  

Hat irgendjemand irgendwelche Erfahrung in   Entwickeln für mehrere Plattformen noch   Lassen Sie Anwendungen nativ laufen   ohne die Notwendigkeit einer VM?

Leicht. Stellen Sie sicher, dass Sie den gesamten plattformspezifischen Code umschließen. Auf diese Weise müssen Sie als Hauptanwendung oder Bibliothek nicht auf den plattformspezifischen Code verweisen. Das sollte es beim Portieren auf eine andere Plattform viel einfacher machen.

    
Kevin 14.05.2009 13:29
quelle

Tags und Links