Je suis conscient qu'il s'agit d'un très ancien article, mais j'ai trouvé une solution qui n'est devenue disponible que plus récemment ET 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 à points, propriétés synthétisées, etc.) a été ajoutée au compilateur Objective-C (voir les notes de publication pour plus de détails). Leur runtime a également été mis à jour pour fonctionner de manière presque identique au runtime Objective-C 2.0 d'Apple. 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 guise de remarque, une fonctionnalité qui n'est pas disponible est les 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 cadres é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 les vôtres (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 site Web de 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ère également d'installer l'environnement MSYS.
Une fois installée, la source d'Objective-C 2.0 peut être compilée 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 l' -mwindows
indicateur. Par exemple:
g++ -mwindows MyFile.cpp
Je ne l'ai pas encore essayé, mais j'imagine que si vous encapsulez vos classes Objective-C dans Objective-C ++ à la couche la plus élevée possible, vous devriez être en mesure de combiner avec succès l'interface graphique native Windows C ++ et Objective-C dans la même application Windows.