Code für Windows & MAC OS X

Domsi

Erfahrenes Mitglied
Hi!

Ich möchte gerne etwas für Windows programmieren und diesen Code aber auch anschließend unter Linux/MAC OSX und in späterer Folge auch auf dem iPhone/iPad (als App) verwenden.

Allerdings ist es lästig, wenn ich jetzt etwas unter Windows programmieren und dann anschließend wieder auf MAC OSX oder Linux alles neu programmieren muss. (Linux ist aber jetzt erstmal nicht soo wichtig, wichtiger ist Windows und MAC OSX).

Wie geht man sowas normalerweiße an? Welche Programmiersprache verwendet man um auf Windows & MAC den selben Programmcode verwenden kann?

Wie sieht es denn mit den Oberfläche aus? Ich schätze ich muss die grafische Oberfläche unter Windows extra machen und unter MAC OS X auch wieder extra machen?

Ich habe bisher soviel mitbekommen, dass man üblicherweise am MAC mit Objective-C und Cocoa programmiert.

Wie gesagt mir geht es halt wirklich darum, dass ich etwas unter Windows programmiere und dies dann auch auf einem MAC kompilieren kann, ohne große Änderungen machen zu müssen!
Welche Programmiersprache sollte ich am besten dafür Verwenden?
C++? C#? Oder gibt es noch andere Möglichkeiten/Sprachen?

(Java wäre eine Möglichkeit, möchte ich aber nicht verwenden ;) )

Mfg,
Domsi
 

ComFreek

Mod | @comfreek
Moderator
Welche Sprachen kannst du denn einigermaßen?

Normalerweise verwendet man entweder Java oder eine andere Sprache mit einem sogenannten GUI-Framework.

Ein GUI-Framework (GUI=Graphical User Interface, Programmoberfläche; Framework=Ansammlung von Klassen, Code) beinhaltet bereits den Code für verschiedene Plattformen, sodass ein einfaches Rekompilieren reicht, um eine lauffähige Anwendung für eine spezifische Plattform zu schaffen. Außerdem bietet so etwas meist einfachere Klassen als die "original"-API (z.B: Cocoa...) und viele weitere nützliche Funktionen.

Wenn du diese Möglichkeit in Erwägung ziehst, würde ich dir wxWidgets empfehlen, am Besten in Verbindung mit C++, wobei es auch Versionen für andere Sprachen gibt.
 

Domsi

Erfahrenes Mitglied
Hi!

Danke für die schnelle Antwort.

Ja also ich habe bisher bereits unter C# mit .NET programmiert.
Ich wurde bei meinen Recherchen auf folgendes Aufmerksam: http://www.mono-project.com/Main_Page
Nachdem ich mich bei .NET und C# auskenne, wäre dies ja am idealsten oder? Wenn ich das richtig (in Zusammenhang mit deinem Post) verstanden habe, dann müsste ich (vorausgesetzt dieses Mono Project funktioniert) doch meinen Code 1:1 auf den MAC Kopieren können und dann anschließend neu kompilieren und es läuft inkl. grafischer Oberfläche auf Mac OS X ?

Man müsst es vermutlich mal austesten, aber so Grundsätzlich sollte dies ja funktionieren oder habe ich da etwas falsch verstanden?

Danke für deinen Tipp mit wxWidgets, werde mir dies auch mal ansehen, falls es mit diesem Mono-Project doch nicht so ist, wie ich denke.

Mfg,
Domsi
 

ComFreek

Mod | @comfreek
Moderator
Ich glaube bei .NET musst du nichteinmal neukompilieren, denn das wird zuerst nur in Bytecode (wie Java, siehe Wikipedia) kompiliert und erst dann mit der Runtime CLR in plattformabhängigen Maschinencode umgewandelt.
Allerdings gibt der Nachteil mit dem Mono Project, dass dies unabhängig vom "Originalen" ist und so immer hinterher in puncto Features ist.
Auf Wikipedia sind - glaube ich - noch mehr Nachteile, aber auch Vorteile gelistet.

Und z.B. wxWidgets unterstützt auch noch mehr Plattformen darunter auch mobile Endgeräte.

Fragt sich, ob du schon tief in der Materie von C# steckst oder eher nicht.
 

Nico Graichen

Erfahrenes Mitglied
Hi zusammen

Du musst so und so auf den einzelnen Zielplatformen kompilieren (und auch testen!). Auf PCs haben ausführbare Dateien die Dateiendung Exe, auf Linux/Unix-Systemen sind die Dateien entsprechend markiert. Umbennen wird da wohl nicht einfach klappen.

@Mono
FÜr die meisten Anwendungen ist Mono nah genug am .NET Framework, dass man keinerlei Probleme hat. Die aktuelle Version bringt auch schon viele .NET 4 Features mit.

Eine Anwendung, welche auf PC, Mac und EierPott/-Pad/-Fön (und auch Android, WM, WP, Symbian, ...) gleich sind, solltest du dir übrigens aus dem Kopf schlagen! Mobile Devices (und damit deren Anwendungen - neudeutsch Apps genannt) bieten ein anderes Bedienkonzept als Desktopgeräte.
 

ComFreek

Mod | @comfreek
Moderator
Eine Anwendung, welche auf PC, Mac und EierPott/-Pad/-Fön (und auch Android, WM, WP, Symbian, ...) gleich sind, solltest du dir übrigens aus dem Kopf schlagen! Mobile Devices (und damit deren Anwendungen - neudeutsch Apps genannt) bieten ein anderes Bedienkonzept als Desktopgeräte.
Deshalb sollte man die GUI (Oberfläche) von der Logik trennen (so viel wie möglich!).
Aber natürlich ist das nicht überall machbar.
 

RudolfG

Erfahrenes Mitglied
Hi zusammen

Du musst so und so auf den einzelnen Zielplatformen kompilieren (und auch testen!). Auf PCs haben ausführbare Dateien die Dateiendung Exe, auf Linux/Unix-Systemen sind die Dateien entsprechend markiert. Umbennen wird da wohl nicht einfach klappen.



Das stimmt so nicht ganz. Du kannst du die DLLs und Anwendungen (.exe) ohne neu kompilieren auch unter linux und Mac benutzen. Allerdings muss man beim Aufruf der .exe-Dateien die Mono-Runtime angeben (siehe: http://www.mono-project.com/Guide:Running_Mono_Applications).

Ich habe ein ASP.NET-Projekt in dem ich zwei (C#) DLLs, die ich unter Windows kompiliert habe, auf Linux mit Mono benutzen kann ohne diese neu zu kompilieren.


Gruß
RudolfG
 

Nico Graichen

Erfahrenes Mitglied
Danke Rudolf

Wieder was dazu gelernt. Das war auch mehr eine Vermutung als eine definitive Aussage.
Aber testen muss er es trotzdem auf den anderen Platformen ;)
 

RudolfG

Erfahrenes Mitglied
Danke Rudolf

Wieder was dazu gelernt. Das war auch mehr eine Vermutung als eine definitive Aussage.

Das ist auch der Grund warum ich denke, das Mono die bessere Möglichkeit ist Plattformübergreifend zu entwickeln als z. B. mit C++/Qt (und ich bin beruflich ein C++/Qt-Entwickler!).

Aber testen muss er es trotzdem auf den anderen Platformen ;)

Das stimmt und davor kann man sich aber auch nicht drücken^^ egal was für eine Sprache/Entwicklungsumgebung man benutzt.

Gruß
Rudolf
 

Strafi

Erfahrenes Mitglied
Na ja sollte für Mac schon ObjC sein, besonders dann wenn es auch noch auf den Iphone laufen soll. Ich programmiere für OSX/IPhone-IPad mit ObjC und Cocoa-Framework. Viele Anbieter nehmen wir zum Beispiel SKYPE, machen sich nicht wirklich die Mühe ihre Software rein C++ einzupflegen. Was besonders bei Skype sehr schade ist.