231 votes

Objective C pour Windows

Quelle serait la meilleure façon de les écrire en Objective-C sur la plate-forme Windows?

Cygwin et gcc? Est-il possible que je peux en quelque sorte les intégrer dans Visual Studio?

Le long de ces lignes - avez-vous des suggestions quant à la façon de créer un lien et d'utiliser le SDK de Windows pour quelque chose comme ça. Son une autre bête, mais je sais que je peux écrire assemblée et un lien dans le Dll Windows me donner l'accessibilité à ces appels, mais je ne sais pas comment le faire sans googler et se fragmentaire directions.

Quelqu'un est-il au courant d'un bon en ligne ou de réserver des ressources à faire ou à expliquer ces sortes de choses?

147voto

Michael Buckley Points 2856

L'expansion sur les deux réponses précédentes, si vous voulez juste Objective-C, mais les cadres de Cacao, puis gcc fonctionne sur n'importe quelle plate-forme. Vous pouvez l'utiliser via Cygwin ou obtenir MinGW. Cependant, si vous souhaitez que le Cacao cadres, ou au moins raisonnable à un sous-ensemble d'entre eux, puis GNUStep et Cocotron sont vos meilleurs paris.

Cocotron met en œuvre beaucoup de choses que GNUStep n'a pas, comme CoreGraphics et CoreData, bien que je ne peux pas garantir l'exhaustivité de leur mise en œuvre sur un cadre précis. Leur but est de conserver la Cocotron à jour avec la dernière version d'OS X, de sorte que tout viable OS X programme peut être exécuté sur Windows. Parce que GNUStep utilise généralement la dernière version de gcc, ils ont aussi ajouter le support pour Objective-C++ et beaucoup de l'Objective-C 2.0 caractéristiques.

Je n'ai pas testé ces fonctions avec GNUStep, mais si vous utilisez suffisamment dans la nouvelle version de gcc, vous pourriez être en mesure de les utiliser. Je n'ai pas été en mesure d'utiliser Objective-C++ avec GNUStep il y a quelques années. Cependant, GNUStep ne compiler à partir de n'importe quelle plateforme. Cocotron est un très mac centrée sur le projet. Même s'il est probablement possible de le compiler sur d'autres plates-formes, il s'agit XCode fichiers de projet, pas de makefiles, de sorte que vous pouvez seulement de compiler ses cadres de la boîte sur OS X. Il est également livré avec des instructions sur la compilation des applications Windows sous XCode, mais pas de n'importe quelle autre plateforme. Fondamentalement, il est probablement possible de mettre en place un environnement de développement Windows pour Cocotron, mais ce n'est pas aussi facile que d'en organiser un pour GNUStep, et vous serez sur votre propre, GNUStep est certainement le chemin à parcourir si vous êtes en développement sur Windows plutôt que pour Windows.

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

89voto

teshguru Points 1907

Vous pouvez utiliser Objective-C à l'intérieur de l'environnement Windows. Si vous suivez ces étapes, il devrait fonctionner parfaitement:

  1. Visitez le GNUstep site web et téléchargez GNUstep MSYS Subsystem (MSYS pour GNUstep), GNUstep Core (Bibliothèques pour GNUstep), et GNUstep Devel
  2. Après le téléchargement de ces fichiers, de les installer dans l'ordre, ou vous aurez des problèmes avec la configuration
  3. Accédez C:\GNUstep\GNUstep\System\Library\Headers\Foundation1 et de s'assurer qu' Foundation.h existe
  4. Ouvrir une invite de commande et exécutez gcc -v pour vérifier qu' GNUstep MSYS est correctement installé (si vous obtenez un fichier ne trouve pas d'erreur, s'assurer que l' bin le dossier d' GNUstep MSYS est dans votre PATH)
  5. Utilisez ce simple "Hello World" programme de test GNUstep fonctionnalités:

    #include <Foundation/Foundation.h>
    
    int main(void)
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"Hello World!.");
        [pool drain];
     return;
    }
    
  6. Revenir à l'invite de commande et d' cd 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 l'exécuter

Tout le meilleur, et avoir du plaisir avec Objective-C!


NOTES:

  1. J'ai utilisé le chemin d'installation par défaut - réglez votre ligne de commande en conséquence
  2. S'assurer que le chemin d'accès au dossier de la vôtre est semblable à la mienne, sinon vous obtiendrez un message d'erreur

13voto

amrox Points 5371

Aussi :

Le Cocotron est un projet open source qui vise à mettre en œuvre une multi-plateforme Objective-C API semblable à celui décrit par la documentation de cacao de Apple Inc.. Cela inclut la AppKit, Fondation, Objective-C runtime et prise en charge API telles que CoreGraphics et CoreFoundation.

http://www.cocotron.org/

9voto

Matthieu Cormier Points 1639

J'ai des sentiments mitigés au sujet de la Cocotron projet. Je suis content qu'ils sont libérant le code source et le partage, mais je n'ai pas l'impression qu'ils sont en train de faire les choses de la manière la plus simple.

Des exemples.
Apple a publié le code source de l' objective-c runtime, qui comprend des propriétés et de collecte des ordures. Le Cocotron projet a cependant leur propre mise en œuvre de l'objectif-c runtime. Pourquoi s'embêter à dupliquer l'effort? Il y a même un fichier de Projet Visual Studio qui peut être utilisé pour construire une 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 pris la peine de tirer parti de CoreFoundation, qui est aussi rendu disponible par Apple. J'ai posté une question à ce sujet, mais n'a pas reçu de réponse.

Je pense que la meilleure solution est de prendre le code source à partir de sources multiples (Apple, CocoTron, GnuStep) et les fusionner ensemble pour ce que vous avez besoin. Vous aurez à lire beaucoup de sources, mais il sera en vaut le résultat final.

6voto

user397362 Points 41

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X