FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour DLL.CH y LoadLibrary error
Posts: 392
Joined: Tue Jul 29, 2008 01:55 PM
DLL.CH y LoadLibrary error
Posted: Tue Mar 28, 2017 07:20 PM
Hola Antonio

Analizando el problema de los DLL, me encuentro que la funcion LoadLibrary regresa un valor como apuntador del tipo 0xFDB0000
Cuando este valor es analizado por la funcion ABS genera ERROR...

este es parte del codigo del dll.ch

Code (fw): Select all Collapse
#xcommand DLL [<static:STATIC>] FUNCTION <FuncName>( [ <uParam1> AS <type1> ] ;
                                                     [, <uParamN> AS <typeN> ] ) ;
             AS <return> [<pascal:PASCAL>] [ FROM <SymName> ] LIB <*DllName*> ;
       => ;
          [<static>] function <FuncName>( [NOREF(<uParam1>)] [,NOREF(<uParamN>)] ) ;;
             local _hDLL := If( ValType( <DllName> ) == "N", <DllName>, LoadLibrary( <(DllName)> ) ) ;;
             local uResult ;;
             local cFarProc ;;
             if Abs( _hDLL ) > 32 ;;  <------- AQUI GENERA EL ERROR
                cFarProc = GetProcAdd( _hDLL,;
                If( [ Empty( <SymName> ) == ] .t., <(FuncName)>, <SymName> ),;
                [<.pascal.>], <return> [,<type1>] [,<typeN>] ) ;;
                uResult = FWCallDLL( cFarProc [,<uParam1>] [,<uParamN>] ) ;;
                If( ValType( <DllName> ) == "N",, FreeLibrary( _hDLL ) ) ;;
             else ;;
                MsgAlert( "Error code: " + LTrim( Str( _hDLL ) ) + " loading " + ;
                If( ValType( <DllName> ) == "C", <DllName>, Str( <DllName> ) ) ) ;;
             end ;;
          return uResult


Alguna sugerencia para corregir este problema?

Saludos

fwh17.02
Visite Chiapas, el paraiso de México.
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: DLL.CH y LoadLibrary error
Posted: Tue Mar 28, 2017 09:30 PM

parece que estás enlazando una función LoadLibrary() que no es la de FWH

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: DLL.CH y LoadLibrary error
Posted: Tue Mar 28, 2017 09:43 PM

ok, existe un problema, tanto xharbour como harbour, tiene las funciones LoadLibrary nativas, estas retorna un puntero si la carga fue exitosa,
en fwh, existe esa misma funcion pero esta retorna un entero, y esto es un problema si se altera de alguna forma la construccion de el ejecutable y
por alguna razon la funcion que se esta linkeando en el exe es la de xharbour o harbour, ya que en esa instruccion

if Abs( _hDLL ) > 32

la funcion Abs fallara, ya que ella espera un entero, y puede que sea un puntero.

tienes que asegurarte que se este cargando la libreria de fwh en primer lugar, antes de las de [x]Harbour, para descartar este problema.

ahora tu dices que te da error en esa linea exactamente, muestra el log, por que hi se muestra de que tipo en el parametro recibido por la funcion Abs, y ahi salimos de dudas.

salu2

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 392
Joined: Tue Jul 29, 2008 01:55 PM
Re: DLL.CH y LoadLibrary error
Posted: Wed Mar 29, 2017 03:26 AM

Hola Antonio / carlos

Gracias por contestar

Para resolver este problema de la DLL's di un paso a tras...

Generé la aplicacion con la version de FWH17.02 , xHarbour 1.2.3. (Build 20161218) y BCC 7.0

Y problema resuelto... los metodos de las DLL's se ejecutan bien...

Tal vez es necesario esperar una poco antes de usar BCC 7.2, aun que no se si es quien causa el problema.

Saludos

Visite Chiapas, el paraiso de México.
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: DLL.CH y LoadLibrary error
Posted: Wed Mar 29, 2017 08:37 AM
Como te ha indicado Carlos:

tienes que asegurarte que se este cargando la libreria de fwh en primer lugar, antes de las de [x]Harbour, para descartar este problema


Esa es la razón. Revísalo
regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion