he conseguido un iphone

User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: he conseguido un iphone

Post by mastintin »

Antonio Linares wrote:Manuel,

El problema seguramente se debe a que no se está inicializando la máquina virtual de Harbour, ya que el punto de entrada de la aplicación no es el de Harbour.

Prueba a poner estas llamadas:

Code: Select all

void dummy( void )
{
    // hb_cmdargInit( argc, argv );
    hb_vmInit( HB_TRUE ); // inicializa la maquina virtual de Harbour   
    
   if( symFPH == NULL )
        symFPH = hb_dynsymSymbol( hb_dynsymFindName( "DUMMY" ) );
    
    hb_vmPushSymbol( symFPH );
    hb_vmPushNil();
    hb_vmDo( 0 );        

    MsgInfo(@"no");

    hb_vmQuit(); // termina la maquina virtual de Harbour
}
 
Antonio no funciona ....
incluso asi casca :

Code: Select all

void dummy(void)
{
    MsgInfo(@"nono");   
    
      hb_vmInit( HB_TRUE ); // inicializa la maquina virtual de Harbour   
    
    
    //if( symFPH == NULL )
    //  symFPH = hb_dynsymSymbol( hb_dynsymFindName( "MIA" ) );
    
      //  hb_vmPushSymbol( symFPH );
    
        //hb_vmPushNil();
    //  hb_vmDo( 0 );        

//  hb_vmQuit(); 
    
    MsgInfo(@"no"); 
    
}
 
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: he conseguido un iphone

Post by Antonio Linares »

Manuel,

En base a tus explicaciones para compilar los PRGs desde el xcode, estoy usando esta regla:

Image

Pero me genera este error:
/bin/sh: INPUT_FILE_BASE: command not found

A ti te está compilando bien ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: he conseguido un iphone

Post by Antonio Linares »

Asi parece que funciona: (falta proporcionarle el path para los ficheros de cabecera al compilar *.c)

/Users/anto/harbour/bin/harbour ${INPUT_FILE_BASE}.prg -n -o${DERIVED_FILES_DIR}/${INPUT_FILE_BASE}.c

manteniendo como "with output files:"

$(DERIVED_FILES_DIR)/$(INPUT_FILE_BASE).c
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: he conseguido un iphone

Post by Antonio Linares »

Asi he conseguido que use los ficheros de cabecera de Harbour :-)

La idea es que trate nuestros ficheros C como ficheros suyos, y les pase los flags del xcode, etc:

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: he conseguido un iphone

Post by Antonio Linares »

Bueno, de momento la consola de xcode reporta un error concreto a solucionar:

Image

Ese es el error que se genera al llamar a hb_vmInit( TRUE );
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: he conseguido un iphone

Post by mastintin »

Implementada la clase SegmetedControl tanto desde codigo como desde recursos .Faltan mejoras y algunas funciones mas pero ya está funcionando correctamente desde ambos .

Saludos.

Code: Select all


function Main()

   local oWnd := TWindow():New()
   local osegment = TSegment():New( oWnd, 77, 50, 207, 44 )
    
    osegment:addbutton("hola") 
    osegment:addbutton("Adios") 
    
   osegment:bChange:={|o| msginfo(str(o:nValue))    }

   
   oWnd:Activate()
   
return nil   

 
------------------------------- editado para ampliar ------------------------------------
Ya funciona el preprocesado de segments .....

Code: Select all

function Main()

   local oWnd := TWindow():New()
   local osegment 
    
 @ 77,50 SEGMENTED oSegment  ITEMS {"hola","Adios" } OF oWnd ;
            ON CHANGE  {|o| msginfo(str(o:nValue)) }  SIZE 207,44     
   
   oWnd:Activate()

return nil   
 



Image
Last edited by mastintin on Tue Nov 23, 2010 9:47 am, edited 2 times in total.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: he conseguido un iphone

Post by Antonio Linares »

Ya podemos construir desde xcode! :-)

El error de la inicialización del GT es un error relacionado con el uso de g++ (en vez de gcc) y que ya se detectó en el 2009 y supuestamente se arregló, aunque a nosotros nos está apareciendo. Asi que lo que he hecho es anular la inicialización de la consola de Harbour, que además no la vamos a usar para nada :-)
(aqui se comentó http://www.mail-archive.com/harbour@har ... 23216.html)

Aqui esta la libreria libhbvm.a sin inicialización de consola:
http://www.mediafire.com/?weex3440tdvn04e
Ojo al enlazar, no incluir libhbvmmt.a !

He modificado main.m de esta forma para probar desde xcode:

Code: Select all

#import <UIKit/UIKit.h>

void hb_vmInit( BOOL );

int main(int argc, char *argv[]) {
    
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSLog( @"antes de vmInit()" );
    hb_vmInit( TRUE );
    NSLog( @"despues de vmInit" );
    // int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return 0; // retVal;
}
 
y añado un PRG que solo contiene una llamada a NSLog() (la he subido nueva al repositorio):

Code: Select all

function Main()

   NSLog( "Si" )
   
return nil   
 
Y en la consola de xcode se muestra:
2010-11-23 02:38:54.168 harb1[5960:307] antes de vmInit()
2010-11-23 02:38:54.180 harb1[5960:307] Si
2010-11-23 02:38:54.183 harb1[5960:307] despues de vmInit

Debugger stopped.
Asi que ya podemos seguir haciendo pruebas y ver hasta donde avanzamos :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: he conseguido un iphone

Post by Antonio Linares »

Nuestras ventanas desde PRG funcionando! :-)

Al construir desde xcode se ejecuta el ...appdelegate.m del proyecto. Si en didFinishLaunchingWithOptions copiamos el código que tenemos en mainapp.m:

Code: Select all

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    
    // Override point for customization after application launch.
    NSLog( @"antra en appdelegate" );

    PHB_SYMB symMain = hb_dynsymSymbol( hb_dynsymFindName( "MAIN" ) );
    
    NSLog( @"aqui" );
    
    // app = self;
    
    hb_vmPushSymbol( symMain );
    hb_vmPushNil();
    hb_vmDo( 0 );
    
    // Add the view controller's view to the window and display.
    // [window addSubview:viewController.view];
    // [window makeKeyAndVisible];

    return YES;
}
 
Salta perfectamente a nuestro PRG y desde ahi creamos la ventana correctamente :-)

Además la aplicación parece que se firma bien! Estoy usando una licencia de desarrollador de Apple y parece funcionar correctamente. Es decir:

YA NO NECESITAMOS QUE EL IPHONE TENGA JAILBREAK!!! :-D

Proxima prueba: Ejecutar en el simulador...
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: he conseguido un iphone

Post by Antonio Linares »

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: he conseguido un iphone

Post by mastintin »

Bien , Antonio , bien :D .
Exactamente eso estaba intentando hacer con el tema de la function dummy() , si se lanzaba dummy tambien podia lanzar main :P .
Ahora tenemos superado el tema de copiado y lanzado al iphone.
Sería importante hacer "mixtas" las librerias de harbour para iphone .Una misma libreria serviría para el iphone y el simulador y facilitaría el tema mucho .
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: he conseguido un iphone

Post by mastintin »

Una cosa queda en el tintero ... Xcode no generará la aplicacion si no tenemos un certificado de desarrollador de apple .
Si uno se dedica profesionalmente a programar no supone un gran problema el desembolso a realizar , pero si solo se pretende "probar" o usamos el simulador que no necesita certificado ( de momento no disponible :D ) o usamos un iphone con jailbreak y "simulamos" que tenemos certificado para que xcode compile el programa ...
Seguir esta guía para el tema del certificado ( lo del paquete para cydia es otro tema ) http://iapps.scenebeta.com/tutorial/com ... hone-sdk-4
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: he conseguido un iphone

Post by Antonio Linares »

Manuel,
Sería importante hacer "mixtas" las librerias de harbour para iphone .Una misma libreria serviría para el iphone y el simulador y facilitaría el tema mucho
Si. Ayer intenté modificar el make pero no lo terminé. Es algo que tenemos que hacer para facilmente pasar del simulador al teléfono real y viceversa.

Otra idea es unir todas las librerias de Harbour usando lipo, con lo que será mucho más simple el proceso. Una única libreria :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: he conseguido un iphone

Post by Antonio Linares »

Acabo de actualizar el iphone a la nueva versión 4.2.1, aun sin jailbreak, y la aplicación que usa Harbour funciona perfectamente en el iphone :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: he conseguido un iphone

Post by mastintin »

Antonio Linares wrote: Otra idea es unir todas las librerias de Harbour usando lipo, con lo que será mucho más simple el proceso. Una única libreria :-)
Creo que esta es la mejor opción , una unica librería para los dos sistemas permite cambiar de una a otra rapido.
saludos.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: he conseguido un iphone

Post by mastintin »

Compilado y enviado al iphone con xCode ... con archivo de recursos ... :D :D
Image
Post Reply