funciones en xharbour llamadas desde C

Post Reply
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

funciones en xharbour llamadas desde C

Post 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

}
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Post 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?
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Post 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?
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Post Reply