Objectif C Pour Windows

Quelle serait la meilleure façon d'écrire Objective-C sur la plate-forme Windows?

Cygwin et gcc? Y a-t-il un moyen de l'intégrer dans Visual Studio?

Dans ce sens-y a-t-il des suggestions sur la façon de lier et d'utiliser le SDK Windows pour quelque chose comme ça. C'est une bête différente mais je sais que je peux écrire assembly et link dans les DLL Windows ME donnant l'accessibilité à ces appels mais je ne sais pas comment le faire sans googler et obtenir au coup par coup direction.

Est-ce que quelqu'un est au courant d'une bonne ressource en ligne ou en livre pour faire ou expliquer ce genre de choses?

224
demandé sur Bill the Lizard 2008-09-11 18:38:42

13 réponses

En développant les deux réponses précédentes, si vous voulez juste Objective-C mais pas l'un 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 paris.

Cocotron implémente beaucoup de choses que GNUStep ne fait pas, telles que CoreGraphics et CoreData, bien que je ne puisse pas garantir que leur implémentation est complète sur un un cadre spécifique. Leur but est de garder Cocotron à jour avec la dernière version D'OS X afin que tout programme OS X viable peut fonctionner sur Windows. Parce que GNUStep utilise généralement la dernière version de gcc, ils ajoutent également la prise en charge de 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 nouvelle 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 plate-forme. 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, donc vous ne pouvez compiler ses frameworks que sur OS X. Il est également livré avec des instructions sur la compilation des applications Windows sur XCode, mais pas 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 facile que d'en définir un pour GNUStep, et vous serez seul, donc GNUStep est certainement la voie à suivre si vous développez sur Windows par opposition à juste pour Windows.

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

145
répondu Michael Buckley 2012-01-27 19:09:05

Vous pouvez utiliser Objective C dans L'environnement Windows. Si vous suivez ces étapes, cela devrait fonctionner très bien:

  1. visitez 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. Accédez à C:\GNUstep\GNUstep\System\Library\Headers\Foundation1 et s'assurer que les Foundation.h existe
  4. ouvre une invite de commande et exécuter gcc -v pour vérifier que GNUstep MSYS est correctement installé (si vous obtenez un fichier ne trouve pas d'erreur, s'assurer que les bin dossier de GNUstep MSYS est dans votre PATH)
  5. Utilisez ce programme simple "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. Retourner à l'invite de commande et cd à l'endroit où vous avez enregistré le programme "Hello World" et puis le compiler: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, à partir de l'invite de commandes, tapez helloworld pour exécuter il

Tout le meilleur, et amusez-vous avec Objective-C!


NOTES:

  1. j'ai utilisé le chemin d'installation par défaut-ajustez votre ligne de commande en conséquence
  2. assurez-vous que votre chemin de dossier est similaire au mien, sinon vous obtiendrez une erreur
89
répondu teshguru 2015-05-13 00:47:14

Aussi:

Le Cocotron est un projet open source qui vise à mettre en œuvre une API multi-plateforme Objective-C similaire à celle décrite par Apple Inc.la documentation sur le cacao. Cela inclut les API AppKit, Foundation, Objective-C runtime et support telles que CoreGraphics et CoreFoundation.

Http://www.cocotron.org/

13
répondu amrox 2008-09-11 18:26:08

WinObjC? Windows Bridge pour iOS (précédemment 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. En outre, WinObjC prend en charge la compatibilité de L'API iOS. Alors que la version finale aura lieu plus tard cet automne (permettant au pont de profiter de nouvelles capacités d'outillage qui seront livrés avec le prochain Visual Studio 2015 Mise à jour),

Le pont est disponible pour la communauté open-source maintenant dans son état actuel. Entre maintenant et à l'automne. Le pont iOS comme un projet open-source sous la licence MIT. Compte tenu de l'ambition du projet, il est facile pour les développeurs iOS de créer et d'exécuter des applications sur Windows.

Salmaan Ahmed a un poste en profondeur sur le Pont Windows pour iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up / Discussion sur le compilateur, runtime, L'intégration IDE, et ce que le pont est et n'est pas. le meilleur de tous, le code source pour le pont iOS est en direct sur GitHub en ce moment.

Le pont iOS prend en charge les applications Windows 8.1 et Windows 10 construites pour les architectures de processeurs x86 et x64, et bientôt nous ajouterons des optimisations de compilateur et un support pour ARM, qui ajoute un support mobile.

13
répondu Lee Stott 2015-08-10 21:12:24

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

Exemples.
Apple a publié le code source sur objective-C runtime , qui inclut les propriétés et la récupération de place. Le projet Cocotron a cependant sa propre implémentation du runtime objective-C. Pourquoi prendre la peine de dupliquer l'effort? Il y a même un fichier de projet Visual Studio qui peut être utilisé pour construire un objc.dll fichier. Ou si vous êtes vraiment paresseux, vous pouvez simplement copier le fichier DLL à partir d'une installation de Safari sur Windows.

ILS n'ont pas non plus pris la peine de tirer parti de CoreFoundation, qui est également open source par Apple. J'ai posté une question à ce sujet mais je n'ai pas reçu de réponse.

Je pense que la meilleure solution actuelle est de prendre le code source de plusieurs sources (Apple, CocoTron, GnuStep) et de le fusionner ensemble pour ce dont vous avez besoin. Vous devrez lire beaucoup de source mais il vaudra le résultat final.

9
répondu Matthieu Cormier 2009-11-05 20:01:51

Je suis conscient que c'est un très vieux post, mais j'ai trouvé une solution qui n'est devenue disponible que plus récemment et qui permet 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 de points, propriétés synthétisées, etc.) a été ajoutée au compilateur Objective-C (Voir les notes de version pour plus de détails). Leur runtime a également été mis à jour pour fonctionner presque identique à celui D'Apple Objectif-C 2.0 runtime. En bref, cela signifie que (presque) tout programme qui compilera légitimement avec Clang sur un Mac compilera également avec gcc 4.6 sans modification.

En note latérale, une fonctionnalité qui n'est pas disponible est les littéraux dictionary/array/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 cadres étendus D'Apple, vous pouvez. Comme indiqué dans D'autres réponses, GNUStep et le Cocotron fournir des versions modifiées des bibliothèques de classes D'Apple, ou vous pouvez écrire votre propre (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é à partir de le site Web de MinGW. Assurez-vous que lorsque vous l'installez-vous d'inclure l'installation de C, C++, Objective-C et Objective-C++. Bien que facultatif, je suggère également d'installer L'environnement MSYS.

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

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

MinGW prend également en charge la compilation d'Applications Windows GUI natives avec l'indicateur -mwindows. 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++ à la couche la plus élevée possible, vous devriez être capable d'entrelacer avec succès l'interface graphique Windows native C++ et Objective-C dans une Application Windows.

8
répondu Ephemera 2012-10-12 03:48:44

Vérifier WinObjC :

Https://github.com/Microsoft/WinObjC

C'est un projet open-source officiel de Microsoft qui s'intègre avec Visual Studio + Windows.

7
répondu James Ko 2015-11-03 16:24:23

Si vous voulez juste expérimenter, il y a un compilateur Objective-C pour. NET (Windows) ici: qckapp

6
répondu user397362 2013-06-20 06:07:18

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

Ouvrez-c flite

Il suffit de télécharger la dernière source. Vous n'avez pas besoin de construire tout CF-Lite il existe une solution appelée objc.la sln. Vous aurez besoin de corriger quelques-uns des chemins d'inclusion, mais alors il va construire très bien. Il y a même un projet de test inclus afin que vous puissiez voir certains objective-C.m fichiers en cours de compilation et de travail dans visual studio. Une triste chose est-ce que cela ne fonctionne qu'avec Win32 pas x64. Il y a un code d'assemblage qui devrait être écrit Pour x64 pour le supporter.

5
répondu Aaron Stainback 2013-06-20 06:08:40

Une tentative récente de port de L'Objectif C 2.0 vers Windows est le projetsubjectif .

À partir du fichier Readme:

Subjective est une tentative d'apporter Objective C 2.0 avec le support ARC à Windows.

Ce projet est un fork de objc4-532.2, le runtime Objective C qui livré avec OS X 10.8.5. Le port peut être compilé sur OS X en utilisant llvm-clang combiné avec L'éditeur de liens MinGW.

Il existe certaines limitations dont beaucoup sont une question de supplémentaire travail, tandis que d'autres, telles que les exceptions et les blocs, dépendent de plus travail sérieux dans les projets 3ème partie. Les limites sont:

* 32 bits seulement-64 bits est en cours

* liaison statique uniquement - la liaison dynamique est en cours

* pas de fermetures / blocs-tant que libdispatch ne les prend pas en charge sous Windows

* AUCUNE EXCEPTION-jusqu'à ce que clang les supporte sur Windows

* pas de GC de style ancien-jusqu'à ce que quelqu'un s'en soucie...

* internes: pas de vtables, pas de support gdb, tout simplement malloc, Non préoptimisations-certaines de ces choses seront disponibles sous le Construction 64 bits.

* actuellement, un compilateur clang corrigé est requis; le correctif ajoute -fobjc-runtime = drapeau subj

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

4
répondu insys 2014-06-01 15:23:36

Obtenez GNUStep ici

Obtenez MINGW ici

Installer MINGW Installer GNUStep Puis Testez

2
répondu raksa eng 2014-12-20 13:53:42

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

Petit projet: jGRASP avec gcc Grand projet: Cocotron

J'ai entendu dire qu'il y avait des émulateurs, mais je n'ai pu trouver que L'émulateur Apple II http://virtualapple.org/. il semble limité aux jeux.

0
répondu Cloud Cho 2016-02-28 01:34:28

Tout D'abord, oubliez les outilsGNUStep . Ni ProjectManager ni ProjectCenter ne peuvent être appelés IDE. Avec tout le respect que je vous dois, il semble que les gars de GNUStep projet sont bloqués à la fin des années 80 (ce qui est quand NeXTSTEP est apparu pour la première fois).

Vim

ctags soutien Objective-C depuis r771 (assurez-vous de choisir la pré-version 5.9 version et ajouter --langmap=ObjectiveC:.m.h à la ligne de commande, voir ici), de sorte que vous aurez décent code navigation complétion / tag.

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

Emacs

La même chose s'applique à etags livré avec emacsen moderne, de sorte que vous pouvez commencer avec Emacs Objective C Mode . YASnippet fournira des modèles utiles:

YASnippet objc-mode

Et si vous voulez quelque chose de plus intelligent que le code basé sur les balises de base, jetez un oeil à ceci question.

Eclipse

CDT prend en charge les projets basés sur Makefile:

entrez la description de l'image ici

-- techniquement, vous pouvez construire vos projets Objective-C hors de la boîte (sous Windows, vous aurez besoin de la chaîne d'outils Cygwin ou MinGW). Le seul problème est l'éditeur de code qui rapportera beaucoup d'erreurs contre ce qu'il pense être un code C pur (la vérification du code à la volée peut être désactivée, mais quand même...). Si vous voulez une syntaxe correcte la mise en surbrillance, vous pouvez ajouter Eclim votre Eclipse et profiter de toutes les fonctionnalités de Eclipse et Vim (voir ci-dessus).

Un autre plugin Eclipse prometteur est Colorer, mais il ne supporte pas encore Objective-C. Hésitez pas à déposer une demande de fonctionnalité bien.

Slickmodifier

SlickEdit, parmi autres caractéristiques d'une grande IDE, ne soutien Objective-C. Alors qu'il est assez complexe à apprendre (pas aussi complexe que Emacs cependant), je crois que c'est votre meilleure option à condition que cela ne vous dérange pas de l'acheter (le prix est assez abordable).

En outre, il a un Eclipse plugin qui peut être utilisé comme une alternative à l'éditeur autonome.

KDevelop

La rumeur veut qu'il existe un KDevelop patch (15 ans, mais qui s'en soucie?). Personnellement, je ne pense pas que KDevelop soit supérieur aux fonctionnalités par rapport à Emacsen , donc je ne m'embêterais pas à 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.

0
répondu Bass 2017-05-23 11:54:34