Was wäre der beste Weg, um Objective-C auf der Windows-Plattform zu schreiben?
Cygwin und gcc? Gibt es eine Möglichkeit, dies irgendwie in Visual Studio zu integrieren?
In diesem Sinne - gibt es Vorschläge, wie Sie das Windows SDK für so etwas verknüpfen und verwenden können? Es ist ein anderes Biest, aber ich weiß, dass ich Assembly und Link in die Windows-DLLs schreiben kann, um auf diese Aufrufe zugreifen zu können, aber ich weiß nicht, wie ich das tun soll, ohne zu googeln und schrittweise Anweisungen zu erhalten.
Ist jemandem eine gute Online- oder Buchressource bekannt, um solche Dinge zu tun oder zu erklären?
Antworten:
Wenn Sie die beiden vorherigen Antworten erweitern und nur Objective-C, aber keines der Cocoa-Frameworks möchten, funktioniert gcc auf jeder Plattform. Sie können es über Cygwin verwenden oder MinGW erhalten. Wenn Sie jedoch die Cocoa-Frameworks oder zumindest eine vernünftige Teilmenge davon möchten, sind GNUStep und Cocotron Ihre besten Wetten.
Cocotron implementiert eine Menge Dinge, die GNUStep nicht tut, wie CoreGraphics und CoreData, obwohl ich nicht dafür bürgen kann, wie vollständig ihre Implementierung in einem bestimmten Framework ist. Ihr Ziel ist es, Cocotron mit der neuesten Version von OS X auf dem neuesten Stand zu halten, damit jedes funktionsfähige OS X-Programm unter Windows ausgeführt werden kann. Da GNUStep normalerweise die neueste Version von gcc verwendet, werden auch Objective-C ++ und viele der Objective-C 2.0-Funktionen unterstützt.
Ich habe diese Funktionen nicht mit GNUStep getestet, aber wenn Sie eine ausreichend neue Version von gcc verwenden, können Sie sie möglicherweise verwenden. Ich konnte Objective-C ++ vor einigen Jahren nicht mit GNUStep verwenden. GNUStep kompiliert jedoch von nahezu jeder Plattform. Cocotron ist ein sehr mac-zentriertes Projekt. Obwohl es wahrscheinlich möglich ist, es auf anderen Plattformen zu kompilieren, werden XCode-Projektdateien und keine Makefiles mitgeliefert, sodass Sie die Frameworks nur unter OS X sofort kompilieren können. Es enthält auch Anweisungen zum Kompilieren von Windows-Apps unter XCode, jedoch nicht jede andere Plattform. Grundsätzlich ist es wahrscheinlich möglich, eine Windows-Entwicklungsumgebung für Cocotron einzurichten, aber es ist nicht so einfach wie die Einrichtung einer für GNUStep, und Sie sind auf sich allein gestellt. Daher ist GNUStep definitiv der richtige Weg, wenn Sie sich weiterentwickeln Windows im Gegensatz zu nur für Windows.
Für das, was es wert ist, ist Cocotron unter der MIT-Lizenz und GNUStep unter der LGPL lizenziert.
quelle
Sie können Objective C in der Windows-Umgebung verwenden. Wenn Sie diese Schritte ausführen, sollte es einwandfrei funktionieren:
GNUstep MSYS Subsystem
(MSYS für GNUstep),GNUstep Core
(Bibliotheken für GNUstep) und herunterGNUstep Devel
C:\GNUstep\GNUstep\System\Library\Headers\Foundation
1 und stellen Sie sicher, dassFoundation.h
vorhandengcc -v
, um zu überprüfen,GNUstep MSYS
ob sie korrekt installiert ist (wenn der Fehler "Datei nicht gefunden" angezeigt wird, stellen Sie sicher, dass sich derbin
Ordner vonGNUstep MSYS
in Ihrem befindetPATH
).Verwenden Sie dieses einfache "Hello World" -Programm, um die Funktionalität von GNUstep zu testen:
Gehen Sie zurück zur Eingabeaufforderung und dorthin
cd
, wo Sie das Programm "Hello World" gespeichert haben, und kompilieren Sie es dann: 2Geben Sie schließlich an der Eingabeaufforderung ein,
helloworld
um es auszuführenAlles Gute und viel Spaß mit Objective-C!
ANMERKUNGEN :
quelle
gcc -o helloworld...
anc:\gnustep\bin\gcc -o helloworld...
und es funktionierte. Die Alternative wäre, Umgebungsvariablen zu ändern, was ich nicht getan habe, da ich nur Ziel C gesehen habe. Vielen Dank an Teshguru für die aktuelle Antwort.Ebenfalls:
http://www.cocotron.org/
quelle
WinObjC? Windows Bridge für iOS (früher als "Project Islandwood" bekannt).
Windows Bridge für iOS (auch als WinObjC bezeichnet) ist ein Microsoft Open Source-Projekt, das eine Objective-C-Entwicklungsumgebung für Visual Studio / Windows bereitstellt. Darüber hinaus bietet WinObjC Unterstützung für die iOS-API-Kompatibilität. Die endgültige Version wird zwar im Herbst dieses Jahres veröffentlicht (damit die Bridge die neuen Tooling-Funktionen nutzen kann, die mit dem kommenden Visual Studio 2015-Update geliefert werden).
Die Brücke steht der Open-Source-Community jetzt in ihrem aktuellen Zustand zur Verfügung. Bis zum Herbst. Die iOS-Brücke als Open-Source-Projekt unter der MIT-Lizenz. Angesichts der Ambitionen des Projekts ist es für iOS-Entwickler einfach, Apps unter Windows zu erstellen und auszuführen.
Salmaan Ahmed hat eine eingehende Post auf der Windows - Brücke für iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/ der Diskussion Compiler, Laufzeit, IDE-Integration und was die Bridge ist und was nicht. Das Beste ist, dass der Quellcode für die iOS-Bridge derzeit auf GitHub verfügbar ist .
Die iOS-Bridge unterstützt sowohl Windows 8.1- als auch Windows 10-Apps, die für x86- und x64-Prozessorarchitekturen entwickelt wurden. In Kürze werden wir Compiler-Optimierungen und Unterstützung für ARM hinzufügen, wodurch mobile Unterstützung hinzugefügt wird.
quelle
Ich habe gemischte Gefühle gegenüber dem Cocotron-Projekt. Ich bin froh, dass sie Quellcode veröffentlichen und teilen, aber ich habe nicht das Gefühl, dass sie die Dinge am einfachsten machen.
Beispiele.
Apple hat den Quellcode für die Objective-C-Laufzeit freigegeben , die Eigenschaften und Garbage Collection enthält. Das Cocotron-Projekt hat jedoch eine eigene Implementierung der Objective-C-Laufzeit. Warum sich die Mühe machen, den Aufwand zu duplizieren? Es gibt sogar eine Visual Studio-Projektdatei, mit der eine objc.dll-Datei erstellt werden kann. Wenn Sie wirklich faul sind, können Sie die DLL-Datei einfach aus einer Installation von Safari unter Windows kopieren.
Sie haben sich auch nicht die Mühe gemacht, CoreFoundation zu nutzen, das ebenfalls von Apple als Open-Source-Lösung angeboten wird. Ich habe eine Frage dazu gestellt, aber keine Antwort erhalten.
Ich denke, die derzeit beste Lösung besteht darin, Quellcode aus mehreren Quellen (Apple, CocoTron, GnuStep) zu entnehmen und nach Ihren Wünschen zusammenzuführen. Sie müssen viel Quelle lesen, aber es wird das Endergebnis wert sein.
quelle
Ich bin mir bewusst, dass dies ein sehr alter Beitrag ist, aber ich habe eine Lösung gefunden, die erst seit kurzem verfügbar ist UND nahezu alle Objective-C 2.0-Funktionen auf der Windows-Plattform aktiviert.
Mit dem Aufkommen von gcc 4.6 wurde dem Objective-C-Compiler die Unterstützung für Objective-C 2.0-Sprachfunktionen (Blöcke, Punktsyntax, synthetisierte Eigenschaften usw.) hinzugefügt ( Einzelheiten finden Sie in den Versionshinweisen). Ihre Laufzeit wurde ebenfalls aktualisiert, sodass sie fast identisch mit Apples eigener Objective-C 2.0-Laufzeit funktioniert. Kurz gesagt bedeutet dies, dass (fast) jedes Programm, das mit Clang auf einem Mac legitim kompiliert wird, auch ohne Änderung mit gcc 4.6 kompiliert wird.
Nebenbei bemerkt, eine Funktion, die nicht verfügbar ist, sind Wörterbuch- / Array- / usw.-Literale, da sie alle in Clang fest codiert sind, um die Klassen NSDictionary, NSArray, NSNumber usw. von Apple zu verwenden.
Wenn Sie jedoch gerne ohne die umfangreichen Frameworks von Apple leben möchten, können Sie dies tun. Wie in anderen Antworten erwähnt, bieten GNUStep und Cocotron modifizierte Versionen der Klassenbibliotheken von Apple an, oder Sie können Ihre eigenen schreiben (meine bevorzugte Option).
MinGW ist eine Möglichkeit, GCC 4.6 auf der Windows-Plattform zu installieren , und kann von der MinGW-Website heruntergeladen werden . Stellen Sie sicher, dass Sie bei der Installation die Installation von C, C ++, Objective-C und Objective-C ++ einschließen. Obwohl optional, würde ich auch empfehlen, die MSYS-Umgebung zu installieren.
Nach der Installation kann die Objective-C 2.0-Quelle kompiliert werden mit:
gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)
MinGW bietet auch Unterstützung für das Kompilieren nativer Windows-GUI-Anwendungen mit dem
-mwindows
Flag. Beispielsweise:g++ -mwindows MyFile.cpp
Ich habe es noch nicht versucht, aber ich stelle mir vor, wenn Sie Ihre Objective-C-Klassen in Objective-C ++ auf der höchstmöglichen Ebene verpacken, sollten Sie in der Lage sein, native Windows-GUI C ++ und Objective-C erfolgreich in einer einzigen Windows-Anwendung zu verflechten.
quelle
Schauen Sie sich WinObjC an :
https://github.com/Microsoft/WinObjC
Es ist ein offizielles Open-Source-Projekt von Microsoft, das in Visual Studio + Windows integriert ist.
quelle
Wenn Sie nur experimentieren möchten, gibt es hier einen Objective-C-Compiler für .NET (Windows): qckapp
quelle
Sie können hier einen objektiven c-Compiler herunterladen, der mit Windows funktioniert und mit Visual Studio 2008 \ 2010 gut funktioniert.
Open-C-Flite
Laden Sie einfach die neueste Quelle herunter. Sie müssen nicht alles von CF-Lite erstellen. Es gibt eine Lösung namens objc.sln. Sie müssen einige der Include-Pfade korrigieren, aber dann funktioniert es einwandfrei. Es ist sogar ein Testprojekt enthalten, damit Sie sehen können, wie einige Objective-C-M-Dateien kompiliert werden und in Visual Studio arbeiten. Eine traurige Sache ist, dass es nur mit Win32 funktioniert, nicht mit x64. Es gibt einige Assembly-Codes, die für x64 geschrieben werden müssten, damit dies unterstützt wird.
quelle
Ein kürzlich unternommener Versuch, Objective C 2.0 auf Windows zu portieren, ist das Subjective- Projekt.
Aus der Readme:
Das Projekt ist auf Github verfügbar , und es gibt auch einen Thread über die Cocotron-Gruppe, in dem einige der Fortschritte und Probleme beschrieben werden.
quelle
Holen Sie sich GNUStep hier
Holen Sie sich MINGW hier
MINGW installieren GNUStep installieren Dann testen
quelle
Wenn Sie mit der Visual Studio-Umgebung vertraut sind,
Kleines Projekt: jGRASP mit gcc Großes Projekt: Cocotron
Ich habe gehört, dass es Emulatoren gibt, aber ich konnte nur den Apple II-Emulator http://virtualapple.org/ finden . Es scheint auf Spiele beschränkt zu sein.
quelle
Vergessen Sie zunächst die GNUStep- Tools. Weder ProjectManager noch ProjectCenter können als IDE bezeichnet werden. Bei allem Respekt sieht es so aus, als ob die Leute vom GNUStep- Projekt in den späten 80ern feststecken (als NeXTSTEP zum ersten Mal erschien).
Vim
ctags
Unterstützt Objective-C seit r771 (wählen Sie unbedingt die Vorabversion 5.9 aus und fügen Sie--langmap=ObjectiveC:.m.h
sie zur Befehlszeile hinzu, siehe hier ), damit Sie eine anständige Code-Vervollständigung / Tag-Navigation haben.Hier ist eine kurze Anleitung zum Hinzufügen von Objective-C-Unterstützung zum Vim-Tagbar-Plugin.
Emacs
Gleiches gilt für den
etags
Versand mit modernem Emacsen, sodass Sie mit dem Emacs Objective C-Modus beginnen können . YASnippet bietet nützliche Vorlagen:Wenn Sie etwas Intelligenteres als die grundlegende, auf Tags basierende Code-Vervollständigung wünschen , werfen Sie einen Blick auf diese Frage .
Finsternis
CDT unterstützt
Makefile
-basierte Projekte:- Technisch gesehen können Sie Ihre Objective-C-Projekte sofort erstellen (unter Windows benötigen Sie die Cygwin- oder MinGW- Toolchain). Das einzige Problem ist der Code-Editor, der viele Fehler in Bezug auf einen reinen C- Code meldet (die Überprüfung des Codes im laufenden Betrieb kann deaktiviert werden, aber immer noch ...). Wenn Sie eine korrekte Syntaxhervorhebung wünschen, können Sie Eclim zu Ihrer Eclipse hinzufügen und alle guten Funktionen von Eclipse und Vim nutzen (siehe oben).
Ein weiteres vielversprechendes Eclipse- Plugin ist Colorer , das Objective-C jedoch noch nicht unterstützt. Sie können jedoch gerne eine Funktionsanfrage stellen.
SlickEdit
SlickEdit , unter anderen Merkmalen eines großen IDE, hat Unterstützung Objective-C. Das Lernen ist zwar ziemlich komplex (allerdings nicht so komplex wie Emacs), aber ich glaube, dies ist Ihre beste Option, vorausgesetzt, Sie haben nichts dagegen, es zu kaufen (der Preis ist ziemlich erschwinglich).
Darüber hinaus verfügt es über ein Eclipse-Plugin , das als Alternative zum eigenständigen Editor verwendet werden kann.
KDevelop
Gerüchten zufolge gibt es einen KDevelop- Patch (15 Jahre alt, aber wen interessiert das?). Ich persönlich denke nicht, dass KDevelop im Vergleich zu Emacsen überlegen ist , also würde ich es nicht versuchen.
Dies gilt auch für die Objective-C-Entwicklung unter Linux, da alle genannten Tools mehr oder weniger portabel sind.
quelle