DLL con Blinker 7.0 y Clipper 5.2e
Publicado por Oscar Santos (2 intervenciones) el 09/06/2009 21:15:24
Estimados:
Necesito saber si alguien tiene idea de por qué la aplicación, cuyos fuentes agrego más abajo, no responde después de llamar dinámicamente a la DLL unas 600 veces.
Compilado con CA Clipper 5.2e y linkeditado con Blinker 7.0
Desde ya muchas gracias
Oscar Santos
* --------------------------------------------------------------------------------------------------------------------
* Aplicación Principal
FUNCTION T
cDllName := "D.DLL" // Name of the DLL to use
cFunName := "DYNTEST" // Name of the function to call
FOR nI := 1 TO 1000
nLibHan = BLILIBLOD (cDllName) // Dynamically load the DLL
IF nLibHan > 32 // If it loaded successfully
nFunHan := BLIFUNHAN (nLibHan, cFunName) // Get the function handle
IF nFunHan <> 0 // If the function was found
xFunRes = BLIFUNCAL (nI, nFunHan) // Note that function handle is LAST
ELSE
? "DLL file", cDllName, "does not contain function", cFunName
?
ENDIF
BLILIBFRE (nLibHan) // Free the library when finished
ELSE
? "DLL file ", cDllName, "not found or failed to load"
?
ENDIF
NEXT
RETURN NIL
* --------------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------------
* DLL
FUNCTION DYNTEST(nPar1) // Function in a dynamically linked DLL
? nPar1, "This is DYNTEST in the DLL"
RETURN NIL
* --------------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------------
# T.LNK for CA-Clipper
bli exe ext # Create a DOS extended program
output t # Output EXE name
file t # List OBJ files here
defbegin # Module definition commands
name t # Indicate an EXE
defend # End module definition commands
nobell # No irritating beep
* --------------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------------
# D.LNK for CA-Clipper
output d # Output DLL name
file d # List OBJ files here
defbegin # Module definition commands
library d # Indicate a DLL
exetype windows 3.1
exports
DYNTEST # Export the DYNTEST function
defend # End module definition commands
nodeflib # No default libraries
nobell # No irritating beep
* --------------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------------
// T.RMK
COMVER := 52 // CA-Clipper compiler version number
#include "all.rmk" // Standard make file definitions
"$(OUTDIR) .exe" : "$(OBJDIR) .obj"
t.lnk
"t$(COMVER).lnk"
$(LNKCMD) @t$(COMVER) out $@ $(LNKOPT)
"$(OUTDIR)d.dll" : "$(OBJDIR)d.obj"
d.lnk
"d$(COMVER).lnk"
$(LNKCMD) @d$(COMVER) out $@ $(LNKOPT)
"$(OBJDIR)d.obj" : d.prg
"$(OBJDIR) .obj" : t.prg
* --------------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------------
// ALL.RMK
//
// This generic make file contains Blinker standard definitions which are
// included by all the CA-Clipper example make files include with Blinker.
//
// OBJ file directory
OBJDIR := .
// EXE and DLL file directory
OUTDIR := .
COMCMD := clipper // Compile command
COMOPT := /m /n /o$(OBJDIR) // Compile options
LNKCMD := blinker // Link command
LNKOPT := map s,a // Link options
#ifdef DEBUG // Determine if DEBUGging is enabled
COMOPT := $(COMOPT) /b
#end
.prg.obj:
$(COMCMD) $< $(COMOPT)
#stdout ""
#ifeq $(COMVER) 53
#stdout "Creating CA-Clipper 5.3 version"
#else
#ifeq $(COMVER) 52
#stdout "Creating CA-Clipper 5.2 version"
#else
#stdout "Creating CA-Clipper 5.01 version"
#endif
#endif
#stdout "Change COMVER in the make file for a different version"
#stdout ""
bldclp53.obj: // Blinker file
blxclp53.obj: // Blinker file
bldclp52.obj: // Blinker file
blxclp52.obj: // Blinker file
* --------------------------------------------------------------------------------------------------------------------
Necesito saber si alguien tiene idea de por qué la aplicación, cuyos fuentes agrego más abajo, no responde después de llamar dinámicamente a la DLL unas 600 veces.
Compilado con CA Clipper 5.2e y linkeditado con Blinker 7.0
Desde ya muchas gracias
Oscar Santos
* --------------------------------------------------------------------------------------------------------------------
* Aplicación Principal
FUNCTION T
cDllName := "D.DLL" // Name of the DLL to use
cFunName := "DYNTEST" // Name of the function to call
FOR nI := 1 TO 1000
nLibHan = BLILIBLOD (cDllName) // Dynamically load the DLL
IF nLibHan > 32 // If it loaded successfully
nFunHan := BLIFUNHAN (nLibHan, cFunName) // Get the function handle
IF nFunHan <> 0 // If the function was found
xFunRes = BLIFUNCAL (nI, nFunHan) // Note that function handle is LAST
ELSE
? "DLL file", cDllName, "does not contain function", cFunName
?
ENDIF
BLILIBFRE (nLibHan) // Free the library when finished
ELSE
? "DLL file ", cDllName, "not found or failed to load"
?
ENDIF
NEXT
RETURN NIL
* --------------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------------
* DLL
FUNCTION DYNTEST(nPar1) // Function in a dynamically linked DLL
? nPar1, "This is DYNTEST in the DLL"
RETURN NIL
* --------------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------------
# T.LNK for CA-Clipper
bli exe ext # Create a DOS extended program
output t # Output EXE name
file t # List OBJ files here
defbegin # Module definition commands
name t # Indicate an EXE
defend # End module definition commands
nobell # No irritating beep
* --------------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------------
# D.LNK for CA-Clipper
output d # Output DLL name
file d # List OBJ files here
defbegin # Module definition commands
library d # Indicate a DLL
exetype windows 3.1
exports
DYNTEST # Export the DYNTEST function
defend # End module definition commands
nodeflib # No default libraries
nobell # No irritating beep
* --------------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------------
// T.RMK
COMVER := 52 // CA-Clipper compiler version number
#include "all.rmk" // Standard make file definitions
"$(OUTDIR) .exe" : "$(OBJDIR) .obj"
t.lnk
"t$(COMVER).lnk"
$(LNKCMD) @t$(COMVER) out $@ $(LNKOPT)
"$(OUTDIR)d.dll" : "$(OBJDIR)d.obj"
d.lnk
"d$(COMVER).lnk"
$(LNKCMD) @d$(COMVER) out $@ $(LNKOPT)
"$(OBJDIR)d.obj" : d.prg
"$(OBJDIR) .obj" : t.prg
* --------------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------------
// ALL.RMK
//
// This generic make file contains Blinker standard definitions which are
// included by all the CA-Clipper example make files include with Blinker.
//
// OBJ file directory
OBJDIR := .
// EXE and DLL file directory
OUTDIR := .
COMCMD := clipper // Compile command
COMOPT := /m /n /o$(OBJDIR) // Compile options
LNKCMD := blinker // Link command
LNKOPT := map s,a // Link options
#ifdef DEBUG // Determine if DEBUGging is enabled
COMOPT := $(COMOPT) /b
#end
.prg.obj:
$(COMCMD) $< $(COMOPT)
#stdout ""
#ifeq $(COMVER) 53
#stdout "Creating CA-Clipper 5.3 version"
#else
#ifeq $(COMVER) 52
#stdout "Creating CA-Clipper 5.2 version"
#else
#stdout "Creating CA-Clipper 5.01 version"
#endif
#endif
#stdout "Change COMVER in the make file for a different version"
#stdout ""
bldclp53.obj: // Blinker file
blxclp53.obj: // Blinker file
bldclp52.obj: // Blinker file
blxclp52.obj: // Blinker file
* --------------------------------------------------------------------------------------------------------------------
Valora esta pregunta


0