¿Cuál sería la mejor manera de escribir Objective-C en la plataforma de Windows?

Cygwin y gcc? Hay una manera de alguna manera se puede integrar esto en Visual Studio?

A lo largo de esas líneas – ¿hay alguna sugerencia en cuanto a cómo enlazar y utilizar el SDK de Windows para algo como esto. Es una bestia diferente, pero sé que puedo escribir de la asamblea y enlace en los archivos Dll de Windows me da el acceso a las personas llamadas, pero no sé cómo hacerlo sin googlear y llegar por etapas direcciones.

Es alguien consciente de un buen online o el libro de recursos para hacer o explicar este tipo de cosas?

InformationsquelleAutor Luther Baker | 2008-09-11

13 Comentarios

  1. 146

    Expansión en las dos respuestas anteriores, si usted sólo quiere Objective-C, pero no el Cacao marcos, luego de gcc funcionará en cualquier plataforma. Usted puede utilizar a través de Cygwin o conseguir MinGW. Sin embargo, si desea que el Cacao marcos, o al menos razonable de un subconjunto de ellos, luego de GNUStep y Cocotron son sus mejores apuestas.

    Cocotron implementa un montón de cosas que GNUStep no, como CoreGraphics y CoreData, aunque no puedo dar fe de cómo completar su aplicación en un marco específico. Su objetivo es mantener Cocotron hasta la fecha con la última versión de OS X, de modo que cualquier viable OS X programa se puede ejecutar en Windows. Porque GNUStep normalmente utiliza la última versión de gcc, también agregar soporte para Objective-C++ y un montón de Objective-C 2.0 características.

    Yo no he probado esas características con GNUStep, pero si usas una lo suficientemente nueva versión de gcc, usted podría ser capaz de utilizarlas. Yo no era capaz de utilizar Objective-C++ con GNUStep hace un par de años. Sin embargo, GNUStep compila a partir de casi cualquier plataforma. Cocotron es un mac centrado en el proyecto. Aunque es probable que sea posible compilarlo en otras plataformas, se trata de proyecto de XCode archivos, no los makefiles, así que sólo se puede compilar sus marcos de la caja en OS X. también viene con las instrucciones en la compilación de aplicaciones de Windows en XCode, pero no de cualquier otra plataforma. Básicamente, es probable que sea posible configurar Windows entorno de desarrollo para Cocotron, pero no es tan fácil como la creación de uno para GNUStep, y usted estará en su propia cuenta, así que GNUStep es definitivamente el camino a seguir si usted está desarrollando en Windows en lugar de sólo para Windows.

    Para lo que vale, Cocotron está licenciado bajo la licencia MIT, y GNUStep es licenciado bajo la LGPL.

    • Siempre se podía puerto de el Cacao framworks que son de código abierto. Por ejemplo, CoreFoundation.
    • No todos los del Núcleo central de la Fundación ES de código abierto. Una enorme cantidad de dinero que es de código cerrado.
    • X D no sé por qué este chico tiene una mejor respuesta que él ni siquiera se trata de las cosas que está hablando. Se debe hacer una nueva insignia de bs respuestas. Sin ánimo de ofender @miguel. Es una lectura muy interesante.
    • Sin ánimo de ofender, pero para el registro, en el momento en que escribí esta respuesta, que yo había estado luchando durante un par de semanas para compilar Objective-C para Windows, y había intentado ir tanto GNUStep y Cocoatron. Yo, finalmente, se vio obligado a reescribir el proyecto en C++, debido a algunos errores de compilador en el tiempo, y ivars no se inicializan a 0 en Windows. Yo hice referencia a «yo no he probado esas características», pero yo estaba hablando de la entonces nueva Objective-C 2.0 características, que sólo había estado disponible en las plataformas de Apple por menos de un año, cuando esta respuesta fue escrito, y acababa de aterrizar en GNUStep.
  2. 89

    Que puede uso de Objective C en el interior del entorno de Windows. Si usted sigue estos pasos, debe estar funcionando bien:

    1. Visitar el GNUstep sitio web y descargar GNUstep MSYS Subsystem (MSYS para GNUstep), GNUstep Core (Bibliotecas para GNUstep), y GNUstep Devel
    2. Después de la descarga de estos archivos, instalar en ese orden, o va a tener problemas con la configuración de
    3. Vaya a C:\GNUstep\GNUstep\System\Library\Headers\Foundation1 y asegurarse de que Foundation.h existe
    4. Abrir un símbolo del sistema y ejecute gcc -v para comprobar que GNUstep MSYS está correctamente instalado (si un archivo no se encuentra el error, asegúrese de que el bin carpeta de GNUstep MSYS es en su PATH)
    5. Uso de este simple «Hola Mundo» programa de prueba de GNUstep funcionalidad:

      #include <Foundation/Foundation.h>
      
      int main(void)
      {
          NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
          NSLog(@"Hello World!.");
          [pool drain];
       return;
      }
    6. Volver al símbolo del sistema y cd a donde guardó el «Hola Mundo», programa y, a continuación, compile: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. Finalmente, desde el símbolo del sistema, escriba helloworld para ejecutarlo

    Todo lo mejor, y divertirse con Objective-C!


    NOTAS:

    1. He utilizado la ruta de instalación predeterminada – ajuste de la línea de comandos en consecuencia
    2. Asegurar la ruta de la carpeta de suyo es similar a la mía, de lo contrario obtendrá un error
    • Esto sugiere la instalación no funciona en mi PC porque ya he instalado gcc que he utilizado para nasm. Así que sólo he corregido gcc -o helloworld... a c:\gnustep\bin\gcc -o helloworld... y funcionó. La alternativa sería modificar las Variables de Entorno que yo no lo hago desde que era sólo la vista Objetivo C. Gracias a teshguru hasta el punto de responder.
    • Considere la posibilidad de quitar de formato de código alrededor de los nombres de las cosas. GNUstep MYSY no es el código, es sólo el nombre de un software. Si quieres algo para destacar, quizá considere que animan ella? Y si algo se conecta a una etiqueta, considere el uso de la etiqueta de delimitadores, pero no hay ninguna razón para poner nombres propios en la etiqueta de delims.
    • cuando se utilizan estos c:\gnustep\bin\gcc -o helloworld.exe helloworld.m -I /GNUstep/GNUstep/System/Library/Headers-L /GNUstep/GNUstep/System/Library/Bibliotecas -std=c99 -lobjc -lgnustep-base -fconstant-cadena-clase=NSConstantString funciona fir me
  3. 13

    También:

    La Cocotron es un proyecto de código abierto que tiene como objetivo implementar una cruz-plataforma de Objective-C API similar a la descrita por Apple Inc.’s de Cacao de la documentación. Esto incluye la AppKit, Fundación, Objective-C en tiempo de ejecución y soporte de Api como CoreGraphics y CoreFoundation.

    http://www.cocotron.org/

    • El Cocotron proyecto está diseñado para ser compilado a partir de XCode, no está escrito en Windows y compilado allí.
    • esto no es una buena respuesta, ni siquiera estoy seguro de por qué el OP elegí este como ‘la respuesta’, porque CoCotron es para Mac y el OP quiere una solución basada en Windows.
    • Estás en lo correcto – me puse un poco demasiado emocionado cuando he leído esto: «El objetivo general es proporcionar soporte completo en cualquier plataforma viable, el proyecto está diseñado para ser lo más portátil posible. Sin embargo, la mayoría de los trabajos en este momento está enfocada en ofrecer soporte para Microsoft Windows. En particular, el NT basado en las versiones de 2000, hasta la Vista.»
  4. 13

    WinObjC? Windows Puente para iOS (anteriormente conocido como «Proyecto Islandwood’).

    Windows Puente para iOS (también conocido como WinObjC) es un Microsoft proyecto de código abierto que proporciona un Objetivo-C entorno de desarrollo de Visual Studio/Windows. Además, WinObjC proporciona soporte para iOS API de compatibilidad. Mientras que la versión final será más adelante este otoño (que permite al puente para tomar ventaja de las nuevas herramientas de las capacidades que se incluirá en la próxima Visual Studio 2015 Actualización),

    El puente está disponible para la comunidad de código fuente abierto ahora en su estado actual. Entre ahora y el otoño. El iOS puente como un proyecto de código abierto bajo la licencia MIT. Dada la ambición del proyecto, por lo que es fácil para los desarrolladores de iOS para crear y ejecutar aplicaciones de Windows.

    Ahmed salman tiene una profundidad de publicar en el Windows Puente para iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/ discutir el compilador en tiempo de ejecución, integración con el IDE, y lo que el puente que es y no es. Lo mejor de todo, el código fuente de iOS puente es vivir en GitHub ahora.

    El iOS puente es compatible con Windows 8.1 y Windows 10 aplicaciones creadas para x86 y x64 arquitecturas de procesador, y pronto vamos a agregar las optimizaciones del compilador y de apoyo para el BRAZO, que añade soporte móvil.

  5. 9

    Tengo sentimientos encontrados acerca de la Cocotron proyecto. Me alegro de que se está liberando el código fuente y compartir, pero no creo que se están haciendo las cosas de la manera más fácil.

    Ejemplos.

    Apple ha liberado el código fuente de la objective-c en tiempo de ejecución, que incluye las propiedades y la recolección de basura. El Cocotron proyecto, sin embargo, tiene su propia implementación de la objective-c en tiempo de ejecución. ¿Por qué molestarse a duplicar el esfuerzo? Incluso hay un Proyecto de Visual Studio archivo que puede ser utilizado para construir un objc.dll archivo. O si eres muy perezoso, usted puede simplemente copiar el archivo DLL de una instalación de Safari en Windows.

    También no se moleste a aprovechar CoreFoundation, que también es de código abierto por parte de Apple. He publicado una pregunta acerca de esto, pero no recibió una respuesta.

    Creo que la mejor solución es tomar el código fuente de múltiples fuentes (Apple, CocoTron, GnuStep) y combinarlos juntos para lo que usted necesita. Vas a tener que leer un montón de origen, pero valdrá la pena el resultado final.

    • Lo siento por no responder a su pregunta en el grupo, para resumir: La APSL chupa y el motor de ejecución y CF están debajo de ellos.
    • La putada de la APSL? (opensource.apple.com/license/apsl) no invasivas como la GPL. Si modifica el código cubierto, a continuación, usted debe hacer que el código disponible. Código cubierto sería cualquier modificación que realice en CoreFoundation por ejemplo, pero no incluiría reales del programa. También es necesario marcar claramente sus modificaciones. Esta es una molestia, pero vale la pena el trade-off de la utilización de Apple altamente probados código ¿no?
    • A largo plazo la molestia de mantenerse en cumplimiento con la licencia y el riesgo de tener la licencia terminado no vale la pena el código.
    • Para el beneficio de otros lectores, lo que Chris está hablando de que se resumen a continuación (gnu.org/philosophy/historical-apsl.html). Creo que el riesgo de Apple de la terminación de la licencia es digno de usar el código. La reacción de ellos nunca hacen tal cosa les impiden hacerlo, salvo en la extremadamente raro de los casos. I. E. Apple es comprada por Oracle y la licencia es revocada.
    • No creo que usted entiende cómo la terminación de las obras, no es algo que se puede hacer para todo el mundo a la vez, el código está licenciado bajo los términos y utilizable bajo los términos de forma indefinida. Lo que puede suceder es que Apple puede señalar a las personas/empresas que piensan que han violado la licencia. La FSF ya lo hace con la GPL violaciones, realmente crees que Apple es más amigable para los desarrolladores de la FSF? Si usted piensa que los términos son irrelevantes y sin sentido, estoy seguro de que puede convencer a Apple legal sólo llevarlos a cabo.
    • Cabe señalar que Apple trabajó con la FSF sobre los cambios en el APSL y que la FSF considera la APSL Versión 2.0 es una licencia de software libre. gnu.org/philosophy/apsl.html
    • Desde mi punto de vista (como alguien que ha tratado con BSD, GPL, MIT y otras licencias en un producto patentado) de Apple licencia es MENOS restrictiva que la GPL, que, francamente, es un dolor en el trasero. Si puedo conseguir BSD, MIT, o APSL, prefiero trabajar con aquellos que la GPL.
    • Tan lejos como la terminación de la GPL violaciones que he leído acerca fueron atroces (personas excluyendo los encabezados, etc.). La única cosa en el APSL que veo que puede que no te guste es que requiere que el documento en el código de los cambios que realice. Suena como una buena práctica de programación para mí. Aparte de eso, estoy perplejo en cuanto a lo que sobre el APSL encontrar onerosa? Tiene menos «trampas» de la GPL!

  6. 8

    Soy consciente de que esto es muy viejo el post, pero he encontrado una solución que sólo se ha vuelto más recientemente Y permite que casi todos los Objective-C 2.0 características en la plataforma Windows.

    Con el advenimiento de gcc 4.6, soporte para Objective-C 2.0 características del lenguaje (bloques, la sintaxis con punto, sintetiza propiedades, etc), se añadió a la Objetivo-compilador de C (ver las notas de la versión para más detalles). Su tiempo de ejecución también ha sido actualizado para trabajar de manera casi idéntica a la propia Apple Objective-C 2.0 en tiempo de ejecución. En definitiva esto significa que (casi) cualquier programa que legítimamente compilar con Clang en un Mac también compila con gcc 4.6 sin modificación.

    Como una nota al margen, una característica que no está disponible es un diccionario/matriz/etc literales ya que todos ellos están codificadas dentro de Ruido para el uso de Apple NSDictionary, NSArray, NSNumber, etc clases.

    Sin embargo, si usted es feliz de vivir sin Apple extensa marcos, usted puede.
    Como se observó en otras respuestas, GNUStep y la Cocotron proporcionar versiones modificadas de Apple bibliotecas de clases, o usted puede escribir su propio (mi opción preferida).

    MinGW es una manera de obtener GCC 4.6 en la plataforma Windows, y puede ser descargado desde El MinGW sitio web. Asegúrese de que cuando usted lo instala que incluyen la instalación de C, C++, Objective-C y Objective-C++. Mientras opcional, también me gustaría sugerir la instalación de la MSYS medio ambiente.

    Una vez instalado, Objective-C 2.0 fuente puede ser compilado con:

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

    MinGW también incluye apoyo para la elaboración de los nativos de la GUI de aplicaciones de Windows con el -mwindows bandera. Por ejemplo:

    g++ -mwindows MyFile.cpp

    No he intentado todavía, pero me imagino que si te envuelva su Objetivo-C clases en Objective-C++ en el más alto posible de la capa, usted debería ser capaz de superar con éxito se entrelazan nativo de Windows GUI C++ y Objective-C, todo en una única Aplicación para Windows.

  7. 6

    Si usted simplemente quiere experimentar, hay un Objetivo-compilador de C para .NET (Windows) aquí: qckapp

    • gracias.me va a ayudar.Muchas gracias…..
    • este programa podría no compila con las osc.#importación <Fundación/Foundation.h> int main (int argc, const char *argv[]) { NSAutoreleasePool * piscina = [[NSAutoreleasePool alloc] init]; NSLog (@»Prueba de…\n..1\n…2\n….3″); [la piscina de drenaje]; return 0; }
  8. 5

    Usted puede conseguir un objetivo compilador de c que funcionará con Windows y jugar bien con Visual Studio 2008\2010 aquí.

    abrir-c flite

    Sólo tienes que descargar el código fuente más reciente. Usted no necesita construir todos los de CF-Lite hay una solución llamada objc.sln. Usted tendrá que arreglar un par de incluir caminos, pero luego se va a construir bien. Incluso hay un proyecto de prueba incluido para que pueda ver algunos objective-c .m los archivos que están siendo recopilados y trabajando en visual studio. Una cosa triste es que solo funciona con Win32 no x64. Hay algún código de la asamblea que tendría que ser escrito para x64 para que soporte eso.

    • He descargado y ejecutar este proyecto con Visual Studio 2013 y tengo 30 casos de este error. Error 64 error C2632: ‘char’, seguido por ‘bool’ es ilegal C:\opencflite-code-248-trunk\include\c99\stdbool.h 20 1 objc
  9. 4

    Un reciente intento de puerto Objective C 2.0 para Windows es la Subjetivo proyecto.

    Desde el Readme:

    Subjetivo es un intento de traer Objetivo C 2.0 con ARCO de apoyo a
    Windows.

    Este proyecto es un fork de objc4-532.2, el Objetivo de tiempo de ejecución de C que
    se suministra con OS X 10.8.5. El puerto puede ser compilado en OS X utilizando
    llvm-clang, combinado con el MinGW enlazador.

    Hay ciertas limitaciones, muchas de las cuales son una cuestión de extra
    de trabajo, mientras que otros, como las excepciones y bloques, dependen de más
    el trabajo serio en la 3ª parte de los proyectos. Las limitaciones son:

    • Sólo de 32 bits – 64 bits está en marcha

    • Vinculación estática sólo – la vinculación dinámica está en marcha

    • Sin cierre/bloques – hasta libdispatch apoya en Windows

    • No hay excepciones – hasta que el ruido se admite en Windows

    • Ningún viejo estilo GC – hasta que alguien se preocupa…

    • Interna: no vtables, no gdb apoyo, simplemente malloc, no
    preoptimizations – algunas de estas cosas pueden estar disponibles bajo la
    De 64 bits construir.

    • En la actualidad un parche para la clang compilador es necesario; el parche añade
    -fobjc-tiempo de ejecución=subj bandera

    El proyecto se encuentra disponible en Github, y también hay un hilo en el Cocotron Grupo de esbozar algunos de los avances y los problemas encontrados.

  10. 0

    Si usted se siente cómodo con el entorno de Visual Studio,

    Pequeño proyecto: jGRASP con gcc
    Gran proyecto: Cocotron

    He escuchado que hay emuladores, pero yo sólo he podido encontrar Emulador de Apple II http://virtualapple.org/. Parece limitado a los juegos.

  11. 0

    Primero de todo, olvidarse de GNUStep herramientas. Ni ProjectManager ni ProjectCenter puede ser llamado un IDE. Con todo el debido respeto, parece que los chicos de GNUStep proyecto están atrapados en los finales de los 80-s (que es cuando NeXTSTEP apareció por primera vez).

    Vim

    ctags apoyo Objective-C desde r771 (asegúrese de elegir el pre-lanzamiento 5.9 versión y agregar --langmap=ObjectiveC:.m.h a la línea de comandos, consulte aquí), por lo que tendrá decente de la finalización de código/etiqueta de navegación.

    He aquí un breve howto en la adición de Objective-C apoyo a Vim tagbar plugin.

    Emacs

    Lo mismo se aplica a etags se entregan con modernas Emacsen, así que usted puede comenzar con Emacs Objetivo C De Modo. YASnippet se proporcionan plantillas útiles:

    Objective-C para Windows

    y si quieres algo más inteligente que la básicos de etiquetas de código basado en la finalización, echa un vistazo a este pregunta.

    Eclipse

    CDT apoya Makefilebasado en proyectos:

    Objective-C para Windows

    — así que técnicamente, usted puede construir su Objetivo-C proyectos fuera de la caja (en Windows, tendrá la Cygwin o MinGW toolchain). El único problema es el editor de código que se informe de un montón de errores en contra de lo que piensa que es un puro C código (on-the-fly con el control de código se puede desactivar, pero aún así…). Si desea adecuada resaltado de sintaxis, puede agregar Eclim a su Eclipse y disfruta de todas las buenas características de ambos Eclipse y Vim (ver arriba).

    Otro prometedor Eclipse plugin es Colorista, pero no es compatible con Objective-C como de todavía. Siéntase libre de presentar una solicitud de función, aunque.

    SlickEdit

    SlickEdit, entre otras características de un gran IDE, hace apoyo Objective-C., Aunque es bastante complejo para aprender (no tan complejo como el Emacs, aunque), creo que esta es tu mejor opción, siempre que no te importa la compra (el precio es bastante asequible).

    Adicionalmente, tiene un El plugin de Eclipse que puede ser utilizado como una alternativa a la stand-alone editor.

    KDevelop

    Se rumorea que existe una KDevelop parche (15 años de edad, pero a quién le importa?). Yo personalmente no creo que KDevelop es característica superior en comparación con Emacsen, así que no se moleste en tratar de ella.


    El anterior también se aplica a Objective-C desarrollo en Linux, ya que todas las herramientas mencionadas son más o menos portátil.

Dejar respuesta

Please enter your comment!
Please enter your name here