FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Problema CALLDLL (Solucionado)
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Problema CALLDLL (Solucionado)
Posted: Sat Sep 06, 2014 07:11 PM
Hola,

He comprobado que la función CALLDLL() ha cambiado debido a la adaptación a varios compiladores de C y 32/64 bits.

Yo estoy usando BCC 32Bits y Harbour, ¿Que sustitución para que funcione necesitaria una función como esta?

Function LlSetDebug(nOnOff)
Return CallDll(_LlSetDebug,nOnOff)


Un Saludo,
Joaquín Martínez
Un Saludo,

Joaquín Martínez
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Problema CALLDLL
Posted: Sat Sep 06, 2014 08:13 PM

Joaquin,

De la manera que quieres llamar a CallDll() no funcionara. La usabas así antes ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Problema CALLDLL
Posted: Sat Sep 06, 2014 08:13 PM

Joaquin,

De la manera que quieres llamar a CallDll() no funcionara. La usabas así antes ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Problema CALLDLL
Posted: Sun Sep 07, 2014 09:55 AM
Hola,

Así sí funcionaba, pero veo que puse el ejemplo incompleto.

// Cargo la Dll
hDll := LoadLibrary("CMLL12.DLL")

//Cargo estas variables
_LlSetDebug :=GetProcAddress(hDll,"LlSetDebug" ,.t.,VOID,LONG)

//---- Creo funciones de este tipo -----------------------------
Function LlSetDebug(nOnOff)
Return CallDll(_LlSetDebug,nOnOff)
//----------------------------------

// Al cerrar el diálogo libero la dll
FreeLibrary(hDll)

Ahora me da error CALLDLL, al enlazar, como que no existe con ese nombre:

Error: Unresolved external '_HB_FUN_CALLDLL' referenced from LISTLAB6.OBJ

¿Cual es el sustituto a CALLDLL para Harbour 32 bits?

Un Saludo,
Joaquín Martínez
Un Saludo,

Joaquín Martínez
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Problema CALLDLL
Posted: Sun Sep 07, 2014 10:25 AM
Antonio,

Comprobado, te pongo un ejemplo más pequeño y fallacon fwcalldll y con fwcalldll32:

Function LlJobOpen(nLanguaje)
? "Dll informes",hDll
uvalor := fwcalldll( GetProcAddress(hDll,"LlJobOpen" ,.t.,LONG,LONG), nLanguaje )
? "fin fwcalldll"
Return uvalor

Cuando llega a fwcalldll, congela la aplicación. Antes como te decía, ha funcionado perfectamente durante años.


Un Saludo,
Joaquín Martínez
Un Saludo,

Joaquín Martínez
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Problema CALLDLL (Solucionado)
Posted: Sun Sep 07, 2014 10:35 AM

Antonio,

Solucionado. Ha habido cambios de nombres de función y en la ayuda no estaba reflejado.

En ningún lado he visto, cuales son los nuevos comandos según sea 32 o 64 bits. Yo he aplicado estos defines en el prg que las usa,
y parece que funciona bien:

 #define CallDll               fwcalldll
#define GetProcAddress  GetProcAdd

Lo que sigo sin saber es si es correcto o en su lugar sería esto:

#define CallDll                fwcalldll32
#define GetProcAddress  GetProcAdd32

Un Saludo,
Joaquín Martínez

Un Saludo,

Joaquín Martínez
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Problema CALLDLL (Solucionado)
Posted: Mon Sep 08, 2014 06:27 AM

Joaquín,

En el caso que te ha funcionado bien, como lo has implementado ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Problema CALLDLL (Solucionado)
Posted: Mon Sep 08, 2014 08:41 AM

Antonio,

SÓLO funciona así:

#define CallDll fwcalldll
#define GetProcAddress GetProcAdd

Un Saludo,

Joaquín Martínez
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Problema CALLDLL (Solucionado)
Posted: Mon Sep 08, 2014 10:12 AM

Joaquín,

Si, así es correcto :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion