Question

Quelle serait la meilleure façon d’écrire Objective-C sur la plateforme Windows ?

Cygwin et gcc ?Existe-t-il un moyen d'intégrer cela dans Visual Studio ?

Dans le même ordre d'idées, existe-t-il des suggestions sur la manière de créer un lien et d'utiliser le SDK Windows pour quelque chose comme celui-ci.C'est une bête différente mais je sais que je peux écrire un assemblage et un lien dans les DLL Windows me donnant accès à ces appels, mais je ne sais pas comment faire cela sans chercher sur Google et obtenir des instructions fragmentaires.

Quelqu'un connaît-il une bonne ressource en ligne ou dans un livre pour faire ou expliquer ce genre de choses ?

Était-ce utile?

La solution

En développant les deux réponses précédentes, si vous voulez juste Objective-C mais aucun des frameworks Cocoa, alors gcc fonctionnera sur n'importe quelle plate-forme.Vous pouvez l'utiliser via Cygwin ou obtenir MinGW.Cependant, si vous voulez les frameworks Cocoa, ou au moins un sous-ensemble raisonnable d'entre eux, alors GNUStep et Cocotron sont vos meilleurs choix.

Cocotron implémente beaucoup de choses que GNUStep ne fait pas, comme CoreGraphics et CoreData, bien que je ne puisse pas garantir à quel point leur implémentation est complète sur un framework spécifique.Leur objectif est de maintenir Cocotron à jour avec la dernière version d'OS X afin que tout programme OS X viable puisse fonctionner sous Windows.Étant donné que GNUStep utilise généralement la dernière version de gcc, ils ajoutent également la prise en charge d'Objective-C++ et de nombreuses fonctionnalités d'Objective-C 2.0.

Je n'ai pas testé ces fonctionnalités avec GNUStep, mais si vous utilisez une version suffisamment récente de gcc, vous pourrez peut-être les utiliser.Je n'ai pas pu utiliser Objective-C++ avec GNUStep il y a quelques années.Cependant, GNUStep compile à partir de n'importe quelle plateforme.Cocotron est un projet très centré sur Mac.Bien qu'il soit probablement possible de le compiler sur d'autres plates-formes, il s'agit de fichiers de projet XCode, pas de makefiles, vous ne pouvez donc compiler ses frameworks que sous OS X.Il est également livré avec des instructions sur la compilation d'applications Windows sur XCode, mais pas sur toute autre plate-forme.Fondamentalement, il est probablement possible de configurer un environnement de développement Windows pour Cocotron, mais ce n'est pas aussi simple que d'en configurer un pour GNUStep, et vous serez seul, donc GNUStep est définitivement la voie à suivre si vous développez sur Windows plutôt que uniquement pour Windows.

Pour ce que ça vaut, Cocotron est sous licence MIT et GNUStep est sous licence LGPL.

Autres conseils

Toi peut utilisez Objective C dans l’environnement Windows.Si vous suivez ces étapes, cela devrait fonctionner correctement :

  1. Visiter le Site Web de GNUstep et téléchargez GNUstep MSYS Subsystem (MSYS pour GNUstep), GNUstep Core (Bibliothèques pour GNUstep), et GNUstep Devel
  2. Après avoir téléchargé ces fichiers, installez-les dans cet ordre, sinon vous rencontrerez des problèmes de configuration
  3. Aller vers C:\GNUstep\GNUstep\System\Library\Headers\Foundation1 et veiller à ce que Foundation.h existe
  4. Ouvrez une invite de commande et exécutez gcc -v pour vérifier ça GNUstep MSYS est correctement installé (si vous obtenez une erreur de fichier introuvable, assurez-vous que le bin dossier de GNUstep MSYS est dans votre PATH)
  5. Utilisez ce simple programme « Hello World » pour tester les fonctionnalités de GNUstep :

    #include <Foundation/Foundation.h>
    
    int main(void)
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"Hello World!.");
        [pool drain];
     return;
    }
    
  6. Revenez à l'invite de commande et cd à l'endroit où vous avez enregistré le programme "Hello World", puis compilez-le :2

    gcc -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
    
  7. Enfin, depuis l'invite de commande, tapez helloworld pour l'exécuter

Bonne chance et amusez-vous avec Objective-C !


REMARQUES:

  1. J'ai utilisé le chemin d'installation par défaut - ajustez votre ligne de commande en conséquence
  2. Assurez-vous que le chemin de votre dossier est similaire au mien, sinon vous obtiendrez une erreur

Aussi:

Le Cocotron est un projet open source qui vise à implémenter une API Objective-C multiplateforme similaire à celle décrite dans la documentation Cocoa d'Apple Inc.Cela inclut l'AppKit, Foundation, le runtime Objective-C et les API de support telles que CoreGraphics et CoreFoundation.

http://www.cocotron.org/

WinObjC?Windows Bridge pour iOS (anciennement connu sous le nom de « Project Islandwood »).

Windows Bridge pour iOS (également appelé WinObjC) est un projet open source Microsoft qui fournit un environnement de développement Objective-C pour Visual Studio/Windows.De plus, WinObjC prend en charge la compatibilité des API iOS.Bien que la version finale soit disponible plus tard cet automne (permettant au pont de profiter des nouvelles fonctionnalités d'outils qui seront livrées avec la prochaine mise à jour de Visual Studio 2015),

Le pont est désormais disponible pour la communauté open source dans son état actuel.D’ici l’automne.Le pont iOS en tant que projet open source sous licence MIT.Compte tenu de l'ambition du projet, permettre aux développeurs iOS de créer et d'exécuter facilement des applications sur Windows.

Salmaan Ahmed a un article détaillé sur Windows Bridge pour iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/ discuter du compilateur, du runtime, de l'intégration de l'IDE et de ce qu'est et n'est pas le pont.Mieux encore, le code source du pont iOS est disponible sur GitHub en ce moment.

Le pont iOS prend en charge les applications Windows 8.1 et Windows 10 conçues pour les architectures de processeurs x86 et x64, et nous ajouterons bientôt des optimisations du compilateur et la prise en charge d'ARM, qui ajoute la prise en charge mobile.

J'ai des sentiments mitigés à propos du projet Cocotron.Je suis heureux qu'ils publient le code source et le partagent, mais je ne pense pas qu'ils fassent les choses de la manière la plus simple.

Exemples.
Apple a publié le code source au exécution objectif-c, qui inclut les propriétés et le garbage collection.Le projet Cocotron a cependant sa propre implémentation du runtime objective-c.Pourquoi s’embêter à dupliquer l’effort ?Il existe même un fichier de projet Visual Studio qui peut être utilisé pour créer un fichier objc.dll.Ou si vous êtes vraiment paresseux, vous pouvez simplement copier le fichier DLL d'une installation de Safari sous Windows.

Ils n’ont pas non plus pris la peine d’exploiter CoreFoundation, qui est également open source par Apple.j'ai posté un question à ce sujet mais je n'ai pas reçu de réponse.

Je pense que la meilleure solution actuelle consiste à prendre le code source de plusieurs sources (Apple, CocoTron, GnuStep) et à le fusionner selon vos besoins.Vous devrez lire beaucoup de sources mais le résultat final en vaudra la peine.

Je suis conscient qu'il s'agit d'un article très ancien, mais j'ai trouvé une solution qui n'est disponible que plus récemment ET qui active presque toutes les fonctionnalités d'Objective-C 2.0 sur la plate-forme Windows.

Avec l'avènement de gcc 4.6, la prise en charge des fonctionnalités du langage Objective-C 2.0 (blocs, syntaxe par points, propriétés synthétisées, etc.) a été ajoutée au compilateur Objective-C (voir les notes de version pour tous les détails).Leur runtime a également été mis à jour pour fonctionner presque de la même manière que le runtime Objective-C 2.0 d'Apple.En bref, cela signifie que (presque) tout programme qui sera légitimement compilé avec Clang sur un Mac sera également compilé avec gcc 4.6 sans modification.

En remarque, une fonctionnalité qui n'est pas disponible est celle des littéraux dictionnaire/tableau/etc car ils sont tous codés en dur dans Clang pour utiliser les classes NSDictionary, NSArray, NSNumber, etc. d'Apple.

Cependant, si vous êtes heureux de vivre sans les frameworks étendus d'Apple, vous le pouvez.Comme indiqué dans d'autres réponses, GNUStep et Cocotron fournissent des versions modifiées des bibliothèques de classes d'Apple, ou vous pouvez écrire la vôtre (mon option préférée).

MinGW est un moyen d'obtenir GCC 4.6 sur la plate-forme Windows et peut être téléchargé depuis Le site MinGW.Assurez-vous que lorsque vous l'installez, vous incluez l'installation de C, C++, Objective-C et Objective-C++.Bien que facultatif, je suggérerais également d'installer l'environnement MSYS.

Une fois installé, le source Objective-C 2.0 peut être compilé avec :

gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)

MinGW inclut également la prise en charge de la compilation d'applications Windows GUI natives avec le -mwindows drapeau.Par exemple:

g++ -mwindows MyFile.cpp

Je ne l'ai pas encore essayé, mais j'imagine que si vous enveloppez vos classes Objective-C dans Objective-C++ au niveau de la couche la plus élevée possible, vous devriez être en mesure d'entrelacer avec succès l'interface graphique Windows native C++ et Objective-C dans une seule application Windows.

Vérifier WinObjC:

https://github.com/Microsoft/WinObjC

Il s'agit d'un projet officiel open source de Microsoft qui s'intègre à Visual Studio + Windows.

Si vous souhaitez simplement expérimenter, il existe un compilateur Objective-C pour .NET (Windows) ici : qckapp

Vous pouvez obtenir un compilateur objectif C qui fonctionnera avec Windows et fonctionnera bien avec Visual Studio 2008\2010 ici.

open-c flite

Téléchargez simplement la dernière source.Vous n'avez pas besoin de construire tout CF-Lite, il existe une solution appelée objc.sln.Vous devrez corriger quelques-uns des chemins d'inclusion, mais la construction se déroulera très bien.Il existe même un projet de test inclus afin que vous puissiez voir certains fichiers objective-c .m compilés et fonctionnant dans Visual Studio.Ce qui est triste, c'est que cela ne fonctionne qu'avec Win32 et non avec x64.Il y a du code assembleur qui devrait être écrit pour x64 pour qu'il prenne en charge cela.

Une tentative récente de portage d'Objective C 2.0 vers Windows est la Subjectif projet.

Extrait du fichier Lisez-moi :

Le subjectif est une tentative d'objectif de l'objectif C 2.0 avec la prise en charge de l'arc à Windows.

Ce projet est une fourche d'OBJC4-532.2, l'objectif C Runtime qui est livré avec OS X 10.8.5.Le port peut être compilé croisé sur OS X à l'aide de LLVM-Clang combiné avec le lieur Mingw.

Il existe certaines limites dont beaucoup sont une question de travail supplémentaire, tandis que d'autres, telles que des exceptions et des blocs, dépendent d'un travail plus sérieux dans des projets tiers.Les limites sont :

• 32 bits uniquement – 64 bits en cours

• Liaison statique uniquement : la liaison dynamique est en cours

• Aucune fermeture/blocage - jusqu'à ce que libdispatch les prenne en charge sous Windows

• Aucune exception - jusqu'à ce que Clang les prenne en charge sous Windows

• Pas de GC à l'ancienne - jusqu'à ce que quelqu'un s'en soucie...

• Internes :Pas de VTables, pas de support GDB, tout simplement malloc, pas de préoptimisations - certaines de ces choses seront disponibles sous la construction 64 bits.

• Actuellement, un compilateur Clang corrigé est requis ;Le patch ajoute -fobjc-runtime = inducteur subj

Le projet est disponible sur GitHub, et il y a aussi un fil sur le Groupe Cocotron décrivant certains des progrès et des problèmes rencontrés.

Obtenez GNUStep ici

Obtenir MINGW ici

Installer Mingw Installer Gnuchep puis tester

Si vous êtes à l'aise avec l'environnement Visual Studio,

Petit projet :JGRASP avec GCC Large Project:Cocotron

J'ai entendu dire qu'il existe des émulateurs, mais je n'ai trouvé que l'émulateur Apple II. http://virtualapple.org/.Cela semble limité aux jeux.

Tout d'abord, oubliez Étape GNU outils.Ni l'un ni l'autre Chef de projet ni Centre de projets peut être appelé un IDE.Avec tout le respect que je vous dois, on dirait que les gars de Étape GNU le projet est bloqué à la fin des années 80 (c'est à ce moment-là que L'étape suivante première apparition).

Vigueur

ctags supporte Objective-C depuis r771 (assurez-vous de choisir la version préliminaire 5.9 et d'ajouter --langmap=ObjectiveC:.m.h à la ligne de commande, voir ici), vous aurez donc une complétion de code/une navigation par balises décente.

Voici un court comment sur l'ajout du support Objective-C au plugin Vim tagbar.

Emacs

de même pour etags livré avec Emacsen moderne, vous pouvez donc commencer avec Emacs Mode Objectif C. Extrait YAS fournira des modèles utiles :

YASnippet objc-mode

et si vous voulez quelque chose de plus intelligent que le complétion de code de base basée sur des balises, regarde ça question.

Éclipse

CDT les soutiens Makefile-projets basés sur :

enter image description here

-- donc techniquement, vous pouvez créer vos projets Objective-C prêts à l'emploi (sous Windows, vous aurez besoin du Cygwin ou MinGW chaîne d'outils).Le seul problème est l'éditeur de code qui signalera de nombreuses erreurs par rapport à ce qu'il pense être un pur C code (la vérification du code à la volée peut être désactivée, mais quand même...).Si vous souhaitez une coloration syntaxique appropriée, vous pouvez ajouter Éclim à ton Éclipse et profitez de toutes les bonnes fonctionnalités des deux Éclipse et Vigueur (voir au dessus).

Un autre prometteur Éclipse le plugin est Coloreur, mais il ne prend pas encore en charge Objective-C.N'hésitez pas à déposer une demande de fonctionnalité.

Slick

Slick, parmi autres caractéristiques d'un grand IDE, fait soutien Objectif c.Bien qu'il soit assez complexe à apprendre (pas aussi complexe qu'Emacs cependant), je pense que c'est votre meilleure option à condition que cela ne vous dérange pas de l'acheter (le prix est tout à fait abordable).

De plus, il possède un Plugin Eclipse qui peut être utilisé comme alternative à l’éditeur autonome.

KDévelopper

La rumeur veut qu'il existe un KDévelopper correctif (15 ans, mais qu'importe ?).personnellement, je ne pense pas KDévelopper est doté de fonctionnalités supérieures à celles de Emacsen, donc je ne prendrais pas la peine de l'essayer.


Ce qui précède s'applique également au développement Objective-C sous Linux, puisque tous les outils mentionnés sont plus ou moins portables.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top