Page 27 of 43
Re: he conseguido un iphone
Posted: Sun Nov 21, 2010 7:57 pm
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 | Expand
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 | Expand
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");
}
Re: he conseguido un iphone
Posted: Mon Nov 22, 2010 6:44 am
by Antonio Linares
Manuel,
En base a tus explicaciones para compilar los PRGs desde el xcode, estoy usando esta regla:
Pero me genera este error:
/bin/sh: INPUT_FILE_BASE: command not found
A ti te está compilando bien ?
Re: he conseguido un iphone
Posted: Mon Nov 22, 2010 7:01 am
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
Re: he conseguido un iphone
Posted: Mon Nov 22, 2010 7:11 am
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:
Re: he conseguido un iphone
Posted: Mon Nov 22, 2010 1:38 pm
by Antonio Linares
Bueno, de momento la consola de xcode reporta un error concreto a solucionar:
Ese es el error que se genera al llamar a hb_vmInit( TRUE );
Re: he conseguido un iphone
Posted: Mon Nov 22, 2010 10:30 pm
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 | Expand
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 | Expand
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
Re: he conseguido un iphone
Posted: Tue Nov 23, 2010 1:42 am
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/?weex3440tdvn04eOjo al enlazar, no incluir libhbvmmt.a !
He modificado main.m de esta forma para probar desde xcode:
Code: Select all | Expand
#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):
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
Re: he conseguido un iphone
Posted: Tue Nov 23, 2010 2:08 am
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 | Expand
- (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!!!
Proxima prueba: Ejecutar en el simulador...
Re: he conseguido un iphone
Posted: Tue Nov 23, 2010 2:18 am
by Antonio Linares
Re: he conseguido un iphone
Posted: Tue Nov 23, 2010 8:04 am
by mastintin
Bien , Antonio , bien
.
Exactamente eso estaba intentando hacer con el tema de la function dummy() , si se lanzaba dummy tambien podia lanzar main
.
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 .
Re: he conseguido un iphone
Posted: Tue Nov 23, 2010 8:23 am
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
) 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/como-publicar-una-aplicacion-en-cydia-xcode-3-2-3iphone-sdk-4
Re: he conseguido un iphone
Posted: Tue Nov 23, 2010 10:23 am
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
Re: he conseguido un iphone
Posted: Tue Nov 23, 2010 11:08 am
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
Re: he conseguido un iphone
Posted: Tue Nov 23, 2010 11:56 am
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.
Re: he conseguido un iphone
Posted: Tue Nov 23, 2010 2:35 pm
by mastintin