elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Objetive C portar a Windows y Linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Objetive C portar a Windows y Linux  (Leído 741 veces)
Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Objetive C portar a Windows y Linux
« en: 18 Marzo 2015, 21:24 pm »

Hola amigos, si he desarrollado aplicaciones para Mac, en Objetive C y quisiera pasarlas a Windows y Linux, hay alguna forma de hacerlo??

Y si fuera posible a FreeBSD sería muy bueno también.

Saludos :-)


En línea

Joe Fraddy

Desconectado Desconectado

Mensajes: 277


Ver Perfil
Re: Objetive C portar a Windows y Linux
« Respuesta #1 en: 19 Marzo 2015, 19:18 pm »

Esto lo encontre en Taringa, no se si en windows es posible compilar, lo que quiero es algo multiplataforma, había optado por FreePASCAL/LAZARUS, pero me dicen que esta muy verde.

Por que objective-c y no c++ ?

objective-c tiene muchas ventajas sobre c++ en el manejo de memoria, pero la mas interesante que no trataremos por ahora es objective-c++ que permite combinar codigo de c++ dentro de objective-c.

como compilar ?


primero instalar

En FreeBSD instala : devel/gnustep


En linux depende de cada distro

en gentoo http://www.gentoo-wiki.info/GNUstep

en ubuntu es muy facil solo tienes que buscar los paquetes gobjc++ clang y gnustep-devel en synaptic.

lamentablemente no tengo tiempo para probar con mas distros lo mejor seria revisar las respectivas wikis

modo general (hay otras maneras que veremos en otros tutos)

Crea un archivo llamado

GNUmakefile

y escribe en el lo siguiente



Código:
# Sample GNUmake file



include $(GNUSTEP_MAKEFILES)/common.make



APP_NAME = HelloWorld

HelloWorld_HEADERS =

HelloWorld_OBJC_FILES = hello.m

HelloWorld_RESOURCE_FILES =



include $(GNUSTEP_MAKEFILES)/application.make


ejecute en linux :


. /usr/share/GNUstep/Makefiles/GNUstep.sh (puede cambiar en cada distro lo mejor es usar "locate GNUstep.sh" )


En FreeBSD


. /usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh  (probado en FreeBSD 9)


código de ejemplo

Código
  1. #import <Foundation/Foundation.h>
  2.  
  3.  
  4. int main(int argc, char *argv[])
  5.  
  6. {
  7.  
  8.  
  9.   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  10.  
  11.  
  12.   NSLog(@"yoxter te saluda");
  13.  
  14.  
  15.   [pool drain];
  16.  
  17.  
  18. return 0;
  19.  
  20. }

pondremos esta código en la misma carpeta que el GNUmakefile y lo nombraremos hello.m


ejecutaremos gmake en FreeBSD y make en Linux


si todo sale bien

podremos ejecutar


openapp ./HelloWorld


y debería salir algo así


2012-07-28 06:31:21.891 HelloWorld[10483] yoxter te saluda


Bueno hemos logrado compilar ahora lo mas importante explicar el código (espero explicarlo bien )


Código:
#import <Foundation/Foundation.h>


si bienes de C notaras que es como el #include, para los que no, esto lo que hace es incluir un archivo llamado Foundation.h dentro de nuestro archivo hello.m, el Foundation.h contiene un conjunto de funciones que ya fueron hechas por otra persona y que están lista para que las usemos.

Código:
int main(int argc, char *argv[]) { }

La función main (la función principal). es lo primero que se ejecuta en nuestro programa.
no quiero indagar mucho en esto de momento para no confundir, por ahora solo diré que "int argc, char *argv[]" son usadas para detectar argumentos pasado por la linea de comandos y que las llaves "{ }" existen para delimitar la función main.


Código:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];



 [pool drain];


También funcionan como llaves para delimitar,

lo que hace básicamente es

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init] le pide a la computadora que le preste algo de memoria

y [pool drain] la devuelve una vez que no la necesita mas.

Código:
NSLog(@"yoxter te saluda");

si vienen de c/c++ esto es como un cout o un printf (mas parecido a este ultimo), para los que no, como se habrán dado cuenta lo que esto es mostrar por pantalla una cadena de caracteres (string), "yoxter te saluda" puede ser cambiado por cualquier cosa

como habrán notado todas las acciones dentro del main terminan como un ;


return 0;


por tradición en unix cuando un programa ha sido ejecutado correctamente devuelve un 0 (y cunado se ejecuta mal cualquier otro numero dependiendo de donde se haya producido el error). notaran que este 0 no se muestra al ejecutar programa.

después de ejecutar el programa (sin haber ejecutado otro desde la terminal), ejecuta "echo $?" y veras el 0
puedes cambiar este numero por el que quieras,


por cuestiones de tiempo solo, haré un tutorial por semana,


espero que les sirva por lo menos de base, pasen por mi blog (la fuente)

Salu2


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Portar codigo a Android
Programación C/C++
Leber 2 2,604 Último mensaje 16 Marzo 2011, 16:51 pm
por Leber
Intel intenta portar Android 3.0 en los procesadores x86
Noticias
WHK 2 2,478 Último mensaje 22 Abril 2011, 19:50 pm
por paju1986
Portar código de dev-c++ a Visual Studio
Programación C/C++
VladisMSX1 4 4,372 Último mensaje 29 Mayo 2012, 09:48 am
por VladisMSX1
Portar Chromium a Qt
Dudas Generales
GeorgArming 0 821 Último mensaje 13 Julio 2012, 00:54 am
por GeorgArming
¿que harías para portar un juego a linux?
Programación General
AWES0MN 7 1,803 Último mensaje 28 Octubre 2012, 20:25 pm
por .::IT::.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines