Page 1 of 1

funciones en xharbour llamadas desde C

Posted: Tue Dec 13, 2005 3:44 am
by goosfancito
Amigos,

Se puede hacer que una funcion creada en xHarbour pueda ser llamada desde un programa creado en C?

Code: Select all

HB_FUNC( MIFUNCION ){

    // llamada a funcion que está en xHarbour

}

Posted: Tue Dec 13, 2005 8:53 am
by Antonio Linares
Gustavo,

Si, se puede perfectamente llamar a funciones en PRG desde C, pero siguiendo una serie de reglas, ya que el stack de la máquina virtual no es el stack de C.

Este es un ejemplo de como llamar a PRG desde C:

Code: Select all

   #include <hbvm.h>

   hb_vmPushSymbol( hb_dynsymGet( "MIFUNCION" )->pSymbol );
   hb_vmPushNil();
   hb_vmPushString( "hola", strlen( "hola" ) );  // pasamos un parámetro
   hb_vmFunction( 1 ); // 1 parámetro pasado

Posted: Tue Dec 13, 2005 10:01 pm
by goosfancito
Antonio,

Gracias, voy a probarlo ahora, porque esto va acarriado a otra pregunta que puse en foro sobre CEM, digamos que la aplicacion en harbour llama a una de C, y esa funcion C tiene que leer una DBF, tonces, haria una funcion en harbour para leer esa DBF y simplemente desde el codigo C llamo a esta.

Me explique?

Posted: Tue Dec 13, 2005 10:35 pm
by goosfancito
Antonio,

Esa parte de codigo, va en mi PRG?

Code: Select all

 #include <hbvm.h> 

   hb_vmPushSymbol( hb_dynsymGet( "MIFUNCION" )->pSymbol ); 
   hb_vmPushNil(); 
   hb_vmPushString( "hola", strlen( "hola" ) );  // pasamos un parámetro 
   hb_vmFunction( 1 ); // 1 parámetro pasado 
donde puedo buscar mas info sobre estos comandos?