Hallo!
Ich arbeite gerade an einem kleinen Buchhaltungsprogramm. Das Ganze soll später mal unter Windows und auch MacOS verwendet werden können. Da es .NET für den Mac (noch?) nicht gibt, muss ich mir dort etwas anderes überlegen.
Das Programm wird zwar nicht allzu komplex, dennoch wäre es auf Dauer keine Lösung zweimal den gleichen Code zu pflegen. Ich habe mir daher überlegt GUI und Logik des Programms strikt von einander zu trennen. Die GUI kann ich dann unter Windows mit WinForms oder WPF und unter MacOS mit Cocoa erstellen. Die Logik entwickle ich hingegen nur einmal und muss dann "nur" die jeweilige GUI an diese "ankoppeln".
Unter Windows wäre es ja kein Problem die Logik in eine DLL auszulagern und auf diese aus einem Programm heraus zuzugreifen. MacOS verwendet auch Bibliotheken die ähnlich zu DLLs sind. Diese haben dort soweit ich weiß z.B. die Endungen .dylib.
Ich habe noch keine genaueren Informationen dazu gefunden, aber ich vermute stark, dass eine Windows DLL nicht einfach in .dylib umbenannt und unter MacOS verwendet werden kann. Vielmehr wird es wohl so sein, dass der Quelltext mit einem Windows-Compiler zu einer DLL und mit einem Mac-Compiler zu einer DyLIB übersetzt werden kann. Korrekt?
Damit wären wir bei dem Problem, dass es für den Mac kein .NET und somit sicherlich auch keinen C# Compiler gibt. Ist es also möglich auf Basis von C# eine Bibliothek zu schreiben die zu einer DLL und einer DyLIB compiliert wird? Dafür müssten ja zwei Dinge möglich sein:
1. Mit C# Code schreiben, der von .NET unabhängig ist. Keine Ahnung ob das möglich ist. Für Buchhaltungsfunktion wie Mittelwertberechnung, etc. brauche ich theoretisch kein .NET Framework, aber ist so eine Trennung möglich?
2. Ein Mac Compiler der das ganze übersetzt.
Geht das?
Oder führt in diesem Fall kein Weg an C/C++ vorbei? Hierfür gibt es ja Compiler für Windows und den Mac, weshalb das Vorhaben hiermit möglich sein sollte, oder?
Wie man sieht stehe ich noch am Anfang der Planung und muss noch einige Grundlagen klären. Jede Hilfe und jeder Tipp ist daher sehr willkommen!
Vielen Dank für eure Meinung zu diesem Thema!
Besten Dank
Ares