FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Otra vez problemas con LOADLIBRARY (Solucionado)
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Otra vez problemas con LOADLIBRARY (Solucionado)
Posted: Tue Jul 07, 2015 04:46 PM
saludos estimados amigos.

Hace algún tiempo tuve un problema similar en una transición. Hoy he intentado de todo lo que se ha dicho en el foro pero no doy con la solución.

Estoy intentando cambiar a Harbour cuya versión es la de 20131007, para usarlo con bcc582 + fwh build Marzo2010.

He superado algunos errores que se presentaron, pero no puedo con el siguiente error:

c:\Borland\bcc582\bin\ilink32 -Gn -aa -Tpe -s @b32.bc
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_HB_FUN_LOADLIBRARY' referenced from C:\FWH\LIB\FIVEH.LIB|HARBOUR
Error: Unresolved external '_HB_FUN_FREELIBRARY' referenced from C:\FWH\LIB\FIVEH.LIB|HARBOUR

He revisado el archivo source FHW/source/function/harbour.prg y en verdad hace la llamada a esta función, que no la encuentra:
Code (fw): Select all Collapse
//----------------------------------------------------------------------------//

function LoadLib32( cDLL )

return LoadLibrary( cDLL )

//----------------------------------------------------------------------------//

function FreeLib32( hDLL )

return FreeLibrary( hDLL )

//----------------------------------------------------------------------------//


Me he metido en este lío, debido a que anteriormente tenía problemas con la subida de archivos binarios desde un archivo de imagen hacia una tabla Mysql, que tronaba al momento de asignar el archivo leído hacia el campo BLOB mediante ADO. Por un tiempo lo dejé con ese problema. Pero hoy necesito que funcione como lo hacía antes de mi última actualización hace 5 años.

Gracias por cualquier ayuda.
Marcelo Jingo
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Otra vez problemas con LOADLIBRARY
Posted: Tue Jul 07, 2015 07:03 PM

Mira este post

viewtopic.php?f=21t=19877p=105315hilit=loadlibrary#p105315

Además, creo que utilizar una version de Harbour posterior a tu version de Fivewin no sé si es la mejor opcion.

&&&

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Otra vez problemas con LOADLIBRARY
Posted: Tue Jul 07, 2015 07:53 PM

Cristóbal

Ya probé esa solución, pero me salía el error de que no encuentra la variable LONG o algo así. Y creo que me he leído casi todos los posts relacionados, y nada.

Alguna otra idea?
Gracias

Marcelo Jingo
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Otra vez problemas con LOADLIBRARY
Posted: Tue Jul 07, 2015 10:38 PM

Puedes poner aqui el buildh.bat o lo que utilices para generar tu aplicacion?

Tambien has de poner los includes necesarios despues del pragma

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Otra vez problemas con LOADLIBRARY
Posted: Tue Jul 07, 2015 11:46 PM

Este es el contenido del archivo rmk.

Borland make sample, (c) FiveTech Software 2005

HBDIR=c:\harb
BCDIR=c:\Borland\bcc582
FWDIR=c:\fwh

change these paths as needed

.path.OBJ = .\obj
.path.PRG = .\
.path.CH = $(FWDIR)\include;$(HBDIR)\include
.path.C = .\c
.path.rc = .\rc

important: Use Uppercase for filenames extensions, in the next two rules!

PRG = \
gpicar.PRG \
browtabla.PRG \
vehic.PRG \
repfecha.PRG \
brwactiv.PRG \
browrep.PRG \
brwinsumo.PRG \
xbrowse.PRG

PROJECT : gpicar.exe

gpicar.exe : $(PRG:.PRG=.OBJ) $(C:.C=.OBJ) gpicar.res
echo off
echo $(BCDIR)\lib\c0w32.obj + > b32.bc
echo obj\gpicar.obj obj\browtabla.obj obj\vehic.obj obj\repfecha.obj obj\brwactiv.obj obj\browrep.obj obj

\brwinsumo.obj obj\xbrowse.obj, + >> b32.bc
echo gpicar.exe, + >> b32.bc
echo gpicar.map, + >> b32.bc
echo $(FWDIR)\lib\FiveH.lib $(FWDIR)\lib\FiveHC.lib + >> b32.bc
echo $(HBDIR)\lib\hbwin.lib + >> b32.bc
echo $(HBDIR)\lib\hbrtl.lib + >> b32.bc
echo $(HBDIR)\lib\hbvm.lib + >> b32.bc
echo $(HBDIR)\lib\gtgui.lib + >> b32.bc
echo $(HBDIR)\lib\hblang.lib + >> b32.bc
echo $(HBDIR)\lib\hbmacro.lib + >> b32.bc
echo $(HBDIR)\lib\hbrdd.lib + >> b32.bc
echo $(HBDIR)\lib\rddntx.lib + >> b32.bc
echo $(HBDIR)\lib\rddcdx.lib + >> b32.bc
echo $(HBDIR)\lib\rddfpt.lib + >> b32.bc
echo $(HBDIR)\lib\hbsix.lib + >> b32.bc
echo $(HBDIR)\lib\hbdebug.lib + >> b32.bc
echo $(HBDIR)\lib\hbcommon.lib + >> b32.bc
echo $(HBDIR)\lib\hbpp.lib + >> b32.bc
echo $(HBDIR)\lib\hbziparc.lib + >> b32.bc
echo $(HBDIR)\lib\hbmzip.lib + >> b32.bc
echo $(HBDIR)\lib\hbzlib.lib + >> b32.bc
echo $(HBDIR)\lib\minizip.lib + >> b32.bc
echo $(HBDIR)\lib\png.lib + >> b32.bc
echo $(HBDIR)\lib\hbcpage.lib + >> b32.bc
echo $(HBDIR)\lib\hbcplr.lib + >> b32.bc
echo $(HBDIR)\lib\hbusrrdd.lib + >> b32.bc
echo $(HBDIR)\lib\hbct.lib + >> b32.bc
echo $(HBDIR)\lib\xhb.lib + >> b32.bc

rem Uncomment these two lines to use Advantage RDD
rem echo $(HBDIR)\lib\rddads.lib + >> b32.bc
rem echo $(HBDIR)\lib\Ace32.lib + >> b32.bc

echo $(BCDIR)\lib\cw32.lib + >> b32.bc
echo $(BCDIR)\lib\uuid.lib + >> b32.bc
echo $(BCDIR)\lib\import32.lib + >> b32.bc
echo $(BCDIR)\lib\ws2_32.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\odbc32.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\nddeapi.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\iphlpapi.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\msimg32.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\psapi.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\rasapi32.lib, >> b32.bc
rem echo $(BCDIR)\lib\psdk\gdiplus.lib + >> b32.bc
rem echo $(BCDIR)\lib\psdk\shell32.lib + >> b32.bc

IF EXIST gpicar.res echo gpicar.res >> b32.bc
$(BCDIR)\bin\ilink32 -Gn -aa -Tpe -s @b32.bc
del b32.bc

.PRG.OBJ:
$(HBDIR)\bin\harbour $< /N /W /Oobj\ /I$(FWDIR)\include;$(HBDIR)\include
$(BCDIR)\bin\bcc32 -c -tWM -I$(HBDIR)\include -oobj\$& obj\$&.c

.C.OBJ:
echo -c -tWM -D__HARBOUR__ -DHB_API_MACROS > tmp
echo -I$(HBDIR)\include;$(FWDIR)\include >> tmp
$(BCDIR)\bin\bcc32 -oobj\$& @tmp $&.c
del tmp

Marcelo Jingo
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Otra vez problemas con LOADLIBRARY
Posted: Wed Jul 08, 2015 03:26 AM

El Harbour con el que últimamente estuve trabajando era la siguiente:
Harbour 2.0.0 (Rev. 13372)
Copyright (c) 1999-2010, http://www.harbour-project.org/

Probé a usar la siguiente:
Harbour 3.0.0 (Rev. 16951)
Copyright (c) 1999-2011, http://harbour-project.org/

No da ningún error, genera bien el executable, pero se mantiene el mismo problema que del anterior, es decir tengo problemas al grabar imágenes en un campo blob

En cambio con esta última ;
Harbour 3.2.0dev (r1307082134)
Copyright (c) 1999-2013, http://harbour-project.org/

Me dan los errores que originalmente comenté al iniciar este post.

En definitiva lo que intentaba probar es que el origen del fallo en la grabación de las imágenes podría ser a causa de algún error o falta de compatibilidad entre FWH 10.3 y el Harbour, e incluso a lo mejor con bcc582.
Antes de usar FWH 10.3, todo funcionaba OK, se me subían sin error las imágenes a la tabla. Ya son muchos años atrás que no recuerdo exactamente que versión de FWH usaba (creo que era 9 ), no se ni la versión de harbour, y me imagino que usaba bcc55.

Este post lo voy a dar por cerrado, porque voy a usar la versión 3.0, que no da los errores y es más actual que la que estaba usando. Abriré un nuevo post para que me ayuden a buscar el origen de mi verdadera preocupación.

Gracias por su tiempo

Marcelo Jingo
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Otra vez problemas con LOADLIBRARY
Posted: Wed Jul 08, 2015 09:46 AM
Marcelo,

Puedes añadir estas funciones a tu PRG principal:

Code (fw): Select all Collapse
#pragma BEGINDUMP

#include <Windows.h>
#include <hbapi.h>
 
//----------------------------------------------------------------------------//
 
HB_FUNC( FREELIBRARY ) // ( hDll ) --> nil
{
   #ifndef _WIN64
      hb_retnl( FreeLibrary( ( HINSTANCE ) hb_parnl( 1 ) ) );
   #else
      hb_retnl( FreeLibrary( ( HINSTANCE ) hb_parnll( 1 ) ) );
   #endif      
}
 
//---------------------------------------------------------------------------//
 
HB_FUNC( LOADLIBRARY ) // ( cDllName ) --> hDll
{
   #ifndef UNICODE
      #ifndef _WIN64
         hb_retnl( ( LONG ) LoadLibrary( hb_parc( 1 ) ) );
      #else
         hb_retnll( ( LONGLONG ) LoadLibrary( hb_parc( 1 ) ) );
      #endif
   #else 
      LPWSTR pW = AnsiToWide( ( char * ) hb_parc( 1 ) );  
      hb_retnl( ( LONG ) LoadLibrary( pW ) );
      hb_xfree( pW );
   #endif   
}

#pragma ENDDUMP
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Otra vez problemas con LOADLIBRARY
Posted: Wed Jul 08, 2015 10:19 PM
Antonio
He añadido las funciones y se ha solucionado en parte, ahora ya se crea la aplicación aunque con algunos warnings que dice:

.\xbrowse.PRG(391) Warning W0001 Ambiguous reference 'SUPER'

Pero ahora al ejecutar me da error indicando que no existe la variable SUPER, y termina el programa. Luego lo que hice fue comentar en el XBROWSE lo siguiente:
Code (fw): Select all Collapse
//#ifdef __XPP__
   #define Super ::TControl
   #define New   _New
//#endif


Dejando sólo la que hace referencia a Super y al tratar de compilar de nuevo me salen como 35 errores que dicen:

.\xbrowse.PRG(419) Error E0030 Syntax error "syntax error at 'SELF'"

Qué debo hacer?
Marcelo Jingo
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: Otra vez problemas con LOADLIBRARY
Posted: Wed Jul 08, 2015 11:50 PM

He eliminado el #ifdef que había y he reemplazado todos los Super del xbrowse por ::Super y con esto se SOLUCIONÓ, el problema del LOADLIBRARY y FREELIBRARY. y se genera la aplicación usando Harbour 3.2 + FW10.3 + BCC582. Pero continúa el problema que me tiene loco, siguen los problemas al cargar las imágenes, que lo estoy tratando en otro post.

Mil gracias

Marcelo Jingo

Continue the discussion