FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Crear DLL con funciones PRG con Xharbour
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Crear DLL con funciones PRG con Xharbour
Posted: Wed Jul 27, 2011 09:38 AM

Hola a todos.
Preguntadoles si alguno a podido crear una DLL auto-contenida (el caso 2), que indica Antonio? Si me puede indicar como se hace por favor.
No he podido encontrar la forma de crear una DLL para que otro .exe creado con otro lenguaje la pueda utilizar.
(Aunque tambi茅n me interesa el caso 1)

Saludos.

Carlos Sincuir

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Crear DLL con funciones PRG con Xharbour
Posted: Mon Aug 01, 2011 08:20 PM
Basicamente lo que se hace es inicializar la m谩quina virtual de Harbour desde el punto de entrada de la DLL. Es lo que hemos hecho por ejemplo para usar Harbour en iOS (iPhone/iPad) y en Android (FivePhone):

Code (fw): Select all Collapse
hb_vmInit( TRUE );

Una vez la m谩quina virtual de Harbour est谩 inicalizada, se trata de acceder a una funci贸n exportada que prepare la pila de Harbour de forma correcta y ejecute la funci贸n de Harbour solicitada. Hay ejemplos de ese c贸digo aqui:

viewtopic.php?p=66195#p66195

En concreto:
Code (fw): Select all Collapse
#pragma BEGINDUMP 

#include <hbapi.h> 
#include <hbvm.h> 

聽 聽...
聽 聽// We build the virtual machine stack frame 

聽 聽hb_vmPushSymbol( hb_dynsymGetSymbol( "SAY" ) ); // we push the symbol of the method 
聽 聽hb_vmPush( hb_param( 1, HB_IT_OBJECT ) ); // we push the object or just NIL for a function/procedure call 
聽 聽hb_vmPushString( "Calling a method from low level", strlen( "Calling a method from low level" ) ); 
聽 聽hb_vmFunction( 1 ); // 1 --> number of supplied parameters 
聽 聽 
聽 聽// the returned value can be accessed using hb_stackReturnItem() --> PHB_ITEM 
聽 聽// or simply calling hb_par...( -1 ); 
} 

#pragma ENDDUMP


Ese c贸digo debe ser exportado para que pueda accederse desde aplicaciones que usen la DLL. Harbour proporciona un define para que exportar una funci贸n en lenguaje C: HB_EXPORT.

El primer paso para practicar esto es aprender a construir una DLL simple en puro lenguaje C y probar a acceder a ella, por ejemplo desde el mismo Harbour. FiveWin proporciona un ejemplo sencillo en FWH\dlls\screen32.c y rc2dll32.bat. Para implementar alguna funci贸n tenemos m谩s ejemplos en:
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Crear DLL con funciones PRG con Xharbour
Posted: Mon Aug 01, 2011 08:48 PM

Gracias Antonio.
Aunque cre铆 que era un poco mas f谩cil el asunto, pero con esto tengo para leer y empezar hacer las pruebas.

Saludos cordiales.

Carlos Sincuir

Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Crear DLL con funciones PRG con Xharbour
Posted: Mon Aug 01, 2011 08:54 PM

Antonio, solo una pregunta mas.
En donde puedo despu茅s encontrar mas ejemplos, que se te corto el mensaje y no se ve en donde mas puedo buscar.

Gracias,

Carlos Sincuir

Continue the discussion