Ziel C für Windows
-
09-06-2019 - |
Frage
Was wäre der beste Weg zu schreiben, Objective-C auf der Windows-Plattform?
Cygwin und gcc?Gibt es eine Möglichkeit, kann ich irgendwie integrieren Sie diese in Visual Studio?
Entlang dieser Linien gibt es irgendwelche Vorschläge, wie link und verwenden Sie das Windows SDK für so etwas.Seine ein anderes Tier, aber ich weiß, ich kann schreiben, Montage und Verknüpfung in der Windows-DLLs mir Zugänglichkeit zu alle Anrufe, aber ich weiß nicht, wie dies zu tun, ohne zu googeln und immer schrittweisen Anweisungen.
Ist jemand bekannt, der einen guten online-oder Buch-Ressource zu tun oder zu erklären, diese Art von Dingen?
Lösung
Die Erweiterung auf den beiden vorherigen Antworten, wenn Sie nur Objective-C wollen, aber keine der Cocoa-Frameworks, dann gcc auf jeder Plattform arbeiten. Sie können es durch Cygwin verwenden oder MinGW bekommen. wenn Sie das Cocoa-Frameworks jedoch wollen, oder zumindest eine vernünftige Untermenge von ihnen, dann GNUStep und Cocotron sind Ihre besten Wetten.
Cocotron implementiert eine Menge Sachen, die GNUStep nicht, wie Core Graphics und Coredata, obwohl ich nicht einstehen können, wie füllen ihre Implementierung auf einem speziellen Rahmen ist. Ihr Ziel ist es Cocotron zu halten up to date mit der neuesten Version von OS X, so dass jedes tragfähige O X-Programm unter Windows ausgeführt werden kann. Da GNUStep der Regel die neueste Version von gcc verwendet, fügen sie auch Unterstützung für Objective-C ++ und viele der Objective-C 2.0-Features.
Ich habe nicht diese Funktionen mit GNUStep getestet, aber wenn man eine ausreichend neue Version von gcc verwenden, können Sie in der Lage sein, sie zu nutzen. Ich war nicht in der Lage, vor Objective-C ++ mit GNUStep ein paar Jahren zu verwenden. Allerdings ist GNUStep von fast jede Plattform kompilieren. Cocotron ist ein sehr mac-centric Projekt. Obwohl es wahrscheinlich möglich ist, es auf anderen Plattformen zu kompilieren, kommt es XCode Projektdateien, nicht Makefiles, so dass Sie nur die Gerüste aus der Box auf OS X kompilieren Es kommt auch mit Anweisungen unter Windows kompilieren apps auf XCode, aber nicht jede andere Plattform. Im Grunde ist es wahrscheinlich möglich, eine Windows-Entwicklungsumgebung für Cocotron einzurichten, aber es ist nicht so einfach wie Einstellung eines nach oben für GNUStep, und Sie werden auf eigene Faust, so GNUStep ist definitiv der Weg zu gehen, wenn Sie die Entwicklung auf Fenster im Gegensatz zu nur für Windows.
Für das, was es wert ist, wird Cocotron unter der MIT-Lizenz veröffentlicht und GNUStep wird unter der LGPL lizenziert.
Andere Tipps
Sie können Objective C innerhalb der Windows-Umgebung verwenden. Wenn Sie diese Schritte ausgeführt haben, sollte es ganz gut funktionieren:
- Besuchen Sie die GNUstep Webseite und Download
GNUstep MSYS Subsystem
(MSYS für GNUstep),GNUstep Core
(Bibliotheken für GNUstep) undGNUstep Devel
- Nach dem Herunterladen dieser Dateien, installieren, in dieser Reihenfolge, oder Sie werden Probleme mit der Konfiguration haben
- Navigieren zu
C:\GNUstep\GNUstep\System\Library\Headers\Foundation
1 und stellen Sie sicher, dassFoundation.h
existiert - Sie eine Eingabeaufforderung öffnen und ausführen
gcc -v
dassGNUstep MSYS
zu überprüfen, korrekt installiert ist (wenn Sie eine Datei nicht gefunden Fehlermeldung erhalten, stellen Sie sicher, dass derbin
OrdnerGNUstep MSYS
in IhremPATH
ist) -
Mit diesem einfachen "Hallo Welt" Programm GNUstep Funktionalität testen:
#include <Foundation/Foundation.h> int main(void) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog(@"Hello World!."); [pool drain]; return; }
-
Gehen Sie zurück zur Eingabeaufforderung und
cd
, wo Sie das "Hallo Welt" Programm gespeichert und dann kompilieren: 2gcc -o helloworld.exe <HELLOWORLD>.m -I /GNUstep/GNUstep/System/Library/Headers -L /GNUstep/GNUstep/System/Library/Libraries -std=c99 -lobjc -lgnustep-base -fconstant-string-class=NSConstantString
-
Schließlich von der Eingabeaufforderung geben Sie
helloworld
es auszuführen
Alles Gute und viel Spaß mit Objective-C!
NOTES: :
- Ich habe den Standardpfad installieren - passen Sie Ihre Befehlszeile entsprechend
- Stellen Sie sicher, der Ordnerpfad von Ihnen ähnlich wie mir ist, sonst wird eine Fehlermeldung angezeigt
Auch:
Die Cocotron ist ein Open-Source-Projekt, die einen plattformübergreifende Objective-C-API ähnlich den von Apple Inc. Cocoa Dokumentation beschrieben implementieren soll. Dazu gehört auch die AppKit, Foundation, Objective-C-Laufzeit und Unterstützung APIs wie Core Graphics und Corefoundation.
WinObjC? Windows-Brücke für iOS (früher bekannt als ‚Projekt Islandwood‘).
Windows-Brücke für iOS (auch als WinObjC bezeichnete) ist ein Microsoft Open-Source-Projekt, das eine Objective-C-Entwicklungsumgebung für Visual Studio / Windows bietet. Darüber hinaus bietet WinObjC Unterstützung für iOS-API-Kompatibilität. Während die endgültige Version später in diesem Herbst passieren wird (so dass die Brücke die Vorteile der neuen Werkzeugfunktionen zu übernehmen, die mit dem kommenden Visual Studio 2015-Update ausgeliefert wird),
Die Brücke ist auf die Open-Source-Community jetzt in seinem aktuellen Zustand zur Verfügung. Zwischen heute und dem Herbst. Die iOS-Brücke als Open-Source-Projekt unter der MIT-Lizenz. In Anbetracht der Ehrgeiz des Projekts, so dass es leicht für iOS-Entwickler zu erstellen und auszuführen Anwendungen unter Windows.
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/ den Compiler zu diskutieren, Laufzeit, IDE-Integration, und das, was die Brücke ist und nicht ist. Best of all, der Quellcode für die iOS-Brücke ist live auf GitHub jetzt.
Die iOS-Brücke unterstützt Windows 8.1 und Windows 10-Anwendungen für x86 und x64-Prozessorarchitekturen gebaut, und bald werden wir Compiler-Optimierungen und Unterstützung für ARM hinzufügen, die mobile Unterstützung hinzufügt.
Ich habe gemischte Gefühle über das Cocotron Projekt. Ich bin froh, dass sie Quellcode veröffentlichen und zu teilen, aber ich glaube nicht, dass sie Dinge tun, der einfachste Weg.
Beispiele.
Apple hat den Quellcode der Objective-C Laufzeit , die beinhaltet Eigenschaften und Garbage collection. Das Cocotron Projekt hat jedoch ihre eigene Implementierung der Objective-C-Laufzeit. Warum sich die Mühe um den Aufwand zu duplizieren? Es gibt sogar eine Visual Studio-Projektdatei, die verwendet werden kann, eine objc.dll-Datei zu erstellen. Oder wenn Sie wirklich faul sind, können Sie einfach kopieren Sie die DLL-Datei von einer Installation von Safari unter Windows.
Sie störte auch nicht Corefoundation zu nutzen, die auch von Apple bezogen ist offen. Ich schrieb einen Frage darüber aber keine Antwort erhalten.
Ich denke, die aktuell beste Lösung ist, Quellcode aus mehreren Quellen zu nehmen (Apfel, CocoTron, GNUstep) und führen Sie sie zusammen, was Sie brauchen. Sie werden eine Menge von Quelle zu lesen, aber es wird das Endergebnis wert sein.
Ich bin mir bewusst, das eine sehr alte Post, aber ich habe eine Lösung gefunden, die erst seit kurzem verfügbar mehr geworden ist, und ermöglicht fast alle Objective-C 2.0-Features auf die Windows-Plattform.
Mit dem Aufkommen von gcc 4.6, Unterstützung für Objective-C 2.0 Sprachfeatures (Blöcke, Punktsyntax, synthetisierten Eigenschaften, usw.) wurde auf die Objective-C-Compiler hinzugefügt (siehe The MinGW Website von
Nach der Installation Objective-C 2.0-Quelle kann mit kompiliert werden: MinGW umfasst auch die Unterstützung für die Erstellung von nativen GUI Windows-Anwendungen mit der Ich habe es noch nicht versucht, aber ich glaube, wenn Sie Ihre Objective-C-Klassen in Objective-C wickeln ++ auf der höchstmöglichen Ebene, sollten Sie in der Lage sein, erfolgreich native Windows-GUI C ++ und Objective-C alle in der einen verflechten zu Windows-Anwendung. gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)
-mwindows
Flagge. Zum Beispiel: g++ -mwindows MyFile.cpp
Überprüfen Sie heraus WinObjC :
https://github.com/Microsoft/WinObjC
Es ist ein offizieller, Open-Source-Projekt von Microsoft, die mit Visual Studio + Windows-integriert.
Wenn Sie nur experimentieren wollen, gibt es eine Objective-C-Compiler für .NET (Windows) hier: qckapp
Sie können einen objektiven C-Compiler erhalten, die mit Windows arbeiten und mit Visual Studio 2008 \ 2010 hier schön spielen.
Nur die neueste Quelle herunterladen. Sie brauchen nicht alle CF-Lite bauen es eine Lösung objc.sln genannt wird. Sie werden einige der Pfade enthalten reparieren müssen, aber dann wird es bauen einfach gut. Es gibt sogar ein Testprojekt enthalten, damit Sie einige Objective-C sehen .m-Dateien werden in Visual Studio erstellt und arbeiten. Eine traurige Sache ist es funktioniert nur mit Win32 nicht x64. Es gibt einig Assembler-Code, die für x64 geschrieben werden müßte dafür, dass zu unterstützen.
Ein aktueller Versuch, Port Objective C 2.0 auf Windows ist die Projekt rel="nofollow">.
Aus der Readme-Datei:
Subjektive ist ein Versuch, Objective-C 2.0 mit ARC Unterstützung zu bringen, Fenster.
Dieses Projekt ist ein Fork von objc4-532.2, die Objective-C-Laufzeit, dass Schiffe mit OS X 10.8.5. Der Port kann sein Quer kompiliert auf OS X llvm-Klirren in Kombination mit dem MinGW Linker.
Es gibt gewisse Einschränkungen, von denen viele eine Frage der zusätzlichen Arbeit, während andere, wie Ausnahmen und Blöcke, hängen von mehr ernsthafte Arbeit in 3rd-Party-Projekten. Die Einschränkungen sind:
• nur 32-Bit - 64-Bit ist im Gang
• Statische Verknüpfung nur - dynamische Verknüpfung ist im Gang
• Keine Schließungen / Blöcke - bis libdispatch unterstützt sie unter Windows
• Keine Ausnahmen - bis Klirren unterstützt sie unter Windows
• Keine alten Stil GC - bis jemand kümmert sich ...
• Internals: keine vtables, keine GDB Unterstützung, einfach nur malloc, nein preoptimizations - einige dieser Dinge wird unter der zur Verfügung 64-Bit-Build.
• Derzeit wird ein gepatcht Klirren Compiler erforderlich ist; der Patch fügt -fobjc-runtime = subj Flag
Das Projekt ist auf Github , und es gibt auch eine Thread auf der Cocotron Gruppe einen Teil der Fortschritte und Probleme umreißt begegnet.
Wenn Sie mit Visual Studio-Umgebung vertraut sind,
Kleines Projekt: jGRASP mit gcc Großprojekt: Cocotron
Ich habe gehört, es gibt Emulatoren, aber ich konnte nur Apple II Emulator http://virtualapple.org/ finden. Es sieht aus wie auf Spiele beschränkt.
Zunächst einmal vergessen GNUStep Werkzeuge. Weder Projectmanager noch Project kann eine IDE aufgerufen werden. Bei allem Respekt, es sieht aus wie Jungs von GNUStep Projekt in den späten 80-er stecken (was ist, wenn Nextstep zuerst erschienen).
Vim
ctags
Unterstützung Objective-C seit r771 (unbedingt die Pre holen -release 5.9 Version und fügen --langmap=ObjectiveC:.m.h
an die Befehlszeile finden Sie unter href="https://stackoverflow.com/a/5790832/1343979">), so dass Sie anständige Code-Vervollständigung / Tag haben werden Navigation.
Hier ist eine kurze Howto auf Objective-C Unterstützung Vim Tagbar Plugin hinzugefügt wird.
Emacs
Das gleiche gilt mit modernen Emacsen ausgeliefert etags
, so können Sie mit Emacs starten Objective C-Modus . YASnippet werden nützliche Vorlagen bieten:
und wenn Sie etwas intelligenter als der Grund-Tags-basierten Code-Vervollständigung nehmen, einen Blick auf diese Frage .
Eclipse-
CDT unterstützt Makefile
-basierte Projekte:
- technisch so können Sie Ihre Objective-C-Projekte aus der Box bauen (unter Windows, müssen Sie die Cygwin oder MinGW Toolchain). Das einzige Problem ist der Code-Editor, der viele Fehler gegen berichten, was er denkt, ist ein reiner C Code (on-the-fly-Code Prüfung abgeschaltet werden kann, aber immer noch ...). Wenn Sie die richtige Syntax-Hervorhebung möchten, können Sie hinzufügen Eclim Ihre Eclipse- und genießen alle gute Eigenschaften beide Eclipse- und Vim (siehe oben).
Ein weiterer vielversprechender Eclipse- Plugin ist Colorer , aber es doesn‘ t Unterstützung Objective-C als der noch. Fühlen Sie sich frei, obwohl eine Feature-Anfrage einreichen.
SlickEdit
SlickEdit unter andere Funktionen einer großen IDE, funktioniert Unterstützung Objective-C. Während es ziemlich komplex ist (nicht so komplex wie Emacs obwohl) zu lernen, ich glaube, dies ist die beste Option, die Sie nicht zur Verfügung gestellt nichts dagegen den Kauf (der Preis ist durchaus erschwinglich).
Darüber hinaus hat es eine Eclipse-Plugin , die verwendet werden können, als Alternative zum Stand-alone-Editor.
KDevelop
Es wird gemunkelt, gibt es eine KDevelop Patch (15 Jahre alt, aber wen interessiert das?). Ich persönlich glaube nicht, KDevelop ist funktions überlegen im Vergleich zu Emacsen , also würde ich nicht die Mühe, es zu versuchen.
Das Vorstehende gilt auch für Objective-C Entwicklung auf Linux, da alle genannten Werkzeuge sind mehr oder weniger tragbar.