funciones en xharbour llamadas desde C

Post Reply
User avatar
goosfancito
Posts: 1956
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 | Expand

HB_FUNC( MIFUNCION ){

    // llamada a funcion que está en xHarbour

}
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
Antonio Linares
Site Admin
Posts: 42597
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 40 times
Been thanked: 86 times
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 | Expand

   #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: 1956
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?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
Posts: 1956
Joined: Fri Oct 07, 2005 7:08 pm

Post by goosfancito »

Antonio,

Esa parte de codigo, va en mi PRG?

Code: Select all | Expand

 #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?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Post Reply