Zitat von
commandah:
Ich habe mal eine dumme frage, wenn ich mit delphi 2005 eine neue .net anwendung erstelle, wie bekomme ich es denn dann hin, das diese auch auf Linux u mac funzt?
Für die Oberfläche:
Entweder Gtk# benutzen und darauf vertrauen, daß der Mac-Benutzer eine Möglichkeit gefunden hat, Gtk+-Anwendungen zu starten (unter MacOS X ist Cocoa üblich, Cocoa# existiert, aber ist nicht unter Windows und Linux nutzbar), oder dich an der Vollständigkeitsliste für den System.Windows.Forms-Namespace von
Mono orientieren und darauf verzichten, die Features zu nutzen, die dort als nicht implementiert gekennzeichnet sind.
Für den Rest:
Auf P/Invokes verzichten, nur reinen Managed-Code verwenden (also auch keine Pointer, solltest du dich für Managed C++ interessieren), nichts Borland- oder Microsoft-spezifisches verwenden (auf System.*-Namespaces beschränken) und für ebenfalls an der Vollständigkeitsliste von Mono orientieren (größtenteils ist aber alles implementiert).
Zitat von
commandah:
Denn wenn ich die Anwendung kompiliere, dann erzeugt es doch auch eine exe, und die kann ich doch schlecht auf nem Linux oder Mac rechner laufen lassen oder?
Das ist für den Zweck irrelevant. Die existierenden portablen .NET-Frameworks nehmen die Echse als Argument und starten diese, sie verfügen also über einen eigenen Loader, der das Format der Echse versteht. Ein typischer Mono-Aufruf sieht beispielsweise so aus:
Das funktioniert unter Windows, Linux und MacOS. Linux bietet außerdem ähnlich wie Windows die Möglichkeit, entsprechend der Dateiendung "exe" das Framework zu starten. Ob das mit MacOS ähnlich geht, weiß ich nicht, da ich nicht weiß, ob das verwendete BSD sowas kann (OpenBSD wird es vermutlich nicht können, nehme ich an).
Edit:
Zitat von
mirage228:
VCL.NET gibts
imho nicht für andere Plattformen.
Bedingt richtig. Die
VCL.NET macht massiv benutzung von nativen Funktionen (via P/Invoke). Das *könnte* man *teilweise* mit WinE hinbiegen, wird aber vermutlich mehr Frickelei als Freude werden. Ich würd's gar nicht erst versuchen.