DLL funciona bien sin mi libreria personal, caso contrario n

DLL funciona bien sin mi libreria personal, caso contrario n

Postby hidroxid » Thu Mar 31, 2016 5:44 am

Hola

Estoy haciendo pruebas con código en DLL para luego utilizarlo dinamicamente con mi ejecutable, ambos en Harbour.

El codigo de la DLL es sencillo:
Code: Select all  Expand view

FUNCTION pruebas_dll( uPar1 )

IF Empty( uPar1 )
   RETURN "Vacio"
ENDIF

RETURN "Lleno"
 


El codigo para el EXE principal:
Code: Select all  Expand view

#include "fivewin.ch"

function Main()

   local hDLL := hb_LibLoad( "w:\pcode.dll" )

   ? ValType( hDll ), hDLL // Saber si tiene el puntero asignado

   ? Do( "pruebas_dll" ) // Aca deberia retornar Vacio

   hb_LibFree( hDLL )

return nil
/*----------------------------------------------------------------------------*/
    #pragma BEGINDUMP

    #include "hbapi.h"

    HB_EXPORT_ATTR PHB_FUNC dll_hb_vmProcAddress( const char * szFuncName )
    {
       return hb_vmProcAddress( szFuncName );
    }

    #pragma ENDDUMP
 


Para facilitar mi trabajo con los sistemas tengo una libreria personal (puro código harbour y una que otra funcion en C sencilla). Cabe destacar que como RE-defino casi todas las clases, mi libreria la coloco antes de las FiveH.lib y FiveHC.lib.

La DLL la genero y cuando compilo el EXE, resulta que si NO uso mi libreria personal la funcion dentro de la DLL funciona perfecto, pero si compilo mi libreria persona no funciona segun lo esperado, tengo un valor de retorno de NIL y la funcion en si dentro de la DLL no se ejecuta (coloque un LogFile para chequear). Cabe destacar que hb_LibLoad() retorna valores, por lo que estimo la DLL se abre correctamente.

¿Alguna pista para saber por donde debo meter el ojo?

Gracias de antemano.
hidroxid
 
Posts: 30
Joined: Sun Apr 24, 2011 12:50 am

Re: DLL funciona bien sin mi libreria personal, caso contrario n

Postby Antonio Linares » Thu Mar 31, 2016 9:21 am

Tu librería personal debe estar sobre escribiendo alguna función de FWH y de ahi que al enlazarla previamente no se enlace la de FWH sino la de tu librería

Es lo primero que revisaría
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42076
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: DLL funciona bien sin mi libreria personal, caso contrario n

Postby hidroxid » Thu Mar 31, 2016 12:34 pm

Llegue a la misma conclusión "ilógica" a mi juicio porque si el código de mi libreria personal funciona bien en todos mis ejecutable, porque no hacerlo con la DLL. ¿ ?

Pero si, no hay otro sitio para donde mirar... tendré que desarmar mi libreria con pinzas y evaluar punto a punto donde estará el problema.

Si resuelvo lo notifico.

Gracias
hidroxid
 
Posts: 30
Joined: Sun Apr 24, 2011 12:50 am

Re: DLL funciona bien sin mi libreria personal, caso contrario n

Postby Armando » Thu Mar 31, 2016 6:45 pm

hidroxid

Yo probaría el llamado a la función así

Code: Select all  Expand view

? pruebas_dll("")
 


Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3209
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], Horizon, Julio Cepeda and 88 guests