Page 1 of 1

Crear librería: no encuentra archivo *.cpp

PostPosted: Tue Apr 20, 2010 4:29 pm
by fernandomoralesdr
Hola.
Utilizo LIB.EXE. Estoy intentando crear mis librerias en FWH a partir de los prg que utilizo en FW195. Harbour me compila el prg sin problema pero: ¿cómo deber ser la línea para crear el obj con BCC32? Con las opciones que le estoy poniendo (las mismas que utiliza buildh.bat) me sale el mensaje de que no encuentra el archivo nombreDeArchivo.cpp. ¿Alguna ayuda o archivo .bat para crear la librería).
Un saludo y gracias por adelantado,
Fernando Morales

Solucionado.

PostPosted: Tue Apr 20, 2010 7:56 pm
by fernandomoralesdr
Solucionado.

Fernando Morales

Re: Crear librería: no encuentra archivo *.cpp

PostPosted: Wed Apr 21, 2010 5:44 am
by Antonio Linares
Fernando,

Siempre recomendamos que se comparta la solución para que así pueda servir a otros, gracias :-)

Disculpas.

PostPosted: Wed Apr 21, 2010 8:25 am
by fernandomoralesdr
Bueno, siento no haber publicado la solución y haber sido bastante escueto. La cosa es que estaba haciendo pruebas y me daba ese error del archivo .cpp. No recuerdo de dónde tomé el ejemplo pero lo que importa es que he logrado que me genere la librería a partir del prg que utlizaba en FW195. Como LIB.EXE me daba problemas he optado por TLINK. Ahí va el .bat (que no es otra cosa que BUILDH.BAT sin el apartado de lincado):

Utilización: CREALIB NombreDeArchivo

@ECHO OFF
if "%FWDIR%" == "" set FWDIR=.\..
if "%HBDIR%" == "" set HBDIR=c:\harbour
set GT=gtgui

ECHO Compilando...

set hdir=%HBDIR%
set hdirl=%hdir%\lib
set fwh=%FWDIR%
set bcdir=c:\bcc55

C:\HARBOUR\BIN\HARBOUR %1 /m /n /iC:\FWH\INCLUDE;C:\HARBOUR\INCLUDE > comp.log
IF ERRORLEVEL 1 GOTO COMPILEERRORS
@type comp.log

echo -O2 -e%1.exe -I%hdir%\include -I%bcdir%\include %1.c > b32.bc

%bcdir%\bin\bcc32 -M -c @b32.bc
:ENDCOMPILE
IF EXIST %1.LIB DEL %1.LIB
%bcdir%\bin\TLIB %1.LIB +%1.OBJ
GOTO FIN

:COMPILEERRORS
echo "Errores de compilaci¢n"

:FIN

Un saludo,
Fernando Morales

Pero me da errores en la llamada a las funciones.

PostPosted: Wed Apr 21, 2010 8:36 am
by fernandomoralesdr
¿Es correcto el archivo que he pasado antes? Crea la librería pero me arroja este mensaje al compilar con BUILDH.BAT el programa que llama a una de las funciones contenidas en el LIB.

C:\FWH\FUNCION\FERNANDO.LIB(1):'Unrecognized keyword '­''
Fatal: Error processing .DEF file

Solucionado.

PostPosted: Wed Apr 21, 2010 9:42 am
by fernandomoralesdr
He creado un nuevo archivo.bat para crear la libreria con este código que he copiado de uno de las respuestas de Antonio Linares:

for %%f in (*.prg) do c:\harbour\bin\harbour %%f /n /ic:\fwh\include;c:\harbour\include
for %%f in (*.c) do c:\bcc55\bin\bcc32 -c -Ic:\bcc55\include;c:\harbour\include %%f
for %%f in (*.obj) do c:\bcc55\bin\tlib fiveh.lib -+ %%f /0 /P32,,

El archivo que me genera es fiveh.lib. La renombro y lista para usar.

En cuanto al BUILDH.BAT me daba error porque hay que cambiar:

echo %bcdir%\lib\psdk\rasapi32.lib , >> b32.bc

POR:

echo %bcdir%\lib\psdk\rasapi32.lib + >> b32.bc
echo c:\fwh\funcion\mi_libreria.lib , >> b32.bc

Parece que va funcionando. Espero no dar tantas vueltas con proyecto.rmk

Un saludo,
Fernando Morales