FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Funciones propias en una lib (Solucionado)
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Funciones propias en una lib (Solucionado)
Posted: Sat Dec 31, 2016 09:13 PM
Saludos

Tengo varios PRG que puse en un archivo .lib. Ahora me gustaria saber en que lugar el .mak debo colocarlo para que se genere el executable

Mi lib se llama mylib.lib

Hice esto pero no esta funcionando

BCDIR=c:\bcc7
HBDIR=c:\harbour
FWDIR=c:\fwh

.path.obj = .\obj
.path.prg = .\prg
.path.ch = $(FWDIR)\include;$(HBDIR)\include
.path.c = .\
.path.rc = .\

PRG = \
.\prg01.prg \
.\prg02.prg \
.\prg03.prg \
.\prg04.prg

OBJ=$(PRG:.prg=.obj)
OBJS=$(OBJ:.\=.\obj\)

PROJECT : myapp.exe

myapp.exe : $(OBJS)
echo off
echo $(BCDIR)\lib\c0w32.obj + > b32.bc
echo $(OBJS), + >> b32.bc
echo myapp.exe, + >> b32.bc
echo myapp.map, + >> b32.bc
echo $(FWDIR)\lib\FiveH.lib $(FWDIR)\lib\FiveHC.lib $(FWDIR)\lib\mylib.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\hbwin.lib + >> b32.bc
echo $(HBDIR)\lib\hbcpage.lib + >> b32.bc
echo $(HBDIR)\lib\hbct.lib + >> b32.bc
echo $(HBDIR)\lib\hbcplr.lib + >> b32.bc
echo $(HBDIR)\lib\xhb.lib + >> b32.bc
echo $(HBDIR)\lib\png.lib + >> b32.bc
echo $(HBDIR)\lib\hbzlib.lib + >> b32.bc
echo $(HBDIR)\lib\hbziparc.lib + >> b32.bc
echo $(HBDIR)\lib\hbmzip.lib + >> b32.bc
echo $(HBDIR)\lib\minizip.lib + >> b32.bc
echo $(HBDIR)\lib\hbpcre.lib + >> b32.bc

echo $(BCDIR)\lib\cw32.lib + >> b32.bc
echo $(BCDIR)\lib\import32.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\shell32.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\gdiplus.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\rasapi32.lib, >> 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 >> comp.log
$(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

Turbo Incremental Link 6.70 Copyright (c) 1997-2014 Embarcadero Technologies, Inc.
Error: Unresolved external '_HB_FUN_ABREODBC' referenced from C:\SGE\OBJ\PRG01.OBJ


Gracias de antemano

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Funciones propias en una lib
Posted: Sun Jan 01, 2017 10:45 AM

El enlazador te indica que no encuentra el c贸digo de la funci贸n ABREODBC()

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Funciones propias en una lib
Posted: Sun Jan 01, 2017 03:46 PM

Ok pero el codigo existe dentro de una funcion en mylib.lib...por que no lo reconoce?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Funciones propias en una lib
Posted: Sun Jan 01, 2017 07:16 PM
Busca dentro de mylib.lib por _HB_FUN_ABREODBC

Puedes usar Total Commander para hacer esta b煤squeda

贸 este inspector de librerias de Andr茅s Reyes:
https://bitbucket.org/fivetech/fivewin-contributions/downloads/Explorer%20Lib-2.0-win32.exe
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Funciones propias en una lib
Posted: Sun Jan 01, 2017 07:19 PM

No me he sabido explicar, me disculpo por ello

Lo que quiero es colocar varios .prg en una sola .lib y luego incluir esa .lib en el .mak asi evito varos .prg

Alguna idea?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Funciones propias en una lib
Posted: Sun Jan 01, 2017 07:59 PM
Entonces lo que necesitas es un make para construir tu librer铆a:

mylib.mak
Code (fw): Select all Collapse
BCDIR=c:\bcc7
HBDIR=c:\harbour
FWDIR=c:\fwh

.path.obj = .\obj
.path.prg = .\prg
.path.ch = $(FWDIR)\include;$(HBDIR)\include
.path.c = .\

PRG = \
.\prg01.prg \
.\prg02.prg \
.\prg03.prg \
.\prg04.prg

PROJECT 聽 聽: mylib.lib

mylib.lib 聽: $(PRG:.PRG=.OBJ)

.PRG.OBJ:
聽 聽$(HDIR)\bin\harbour $< /N /W /es2 /Oobjh\ /I.\include;$(HDIR)\include > comp.log
聽 聽$(BCCDIR)\bin\bcc32 -c -tWM -w-pia -I$(HDIR)\include -Iinclude -oobj\$& obj\$&.c
聽 聽$(BCCDIR)\bin\TLib mylib.lib -+$@ /0 /P64,,

.C.OBJ:
聽 聽echo -c -tWM -D__HARBOUR__ $(LEGACY) -w-pia > tmp
聽 聽echo -I$(HDIR)\include;.\include; >> tmp
聽 聽$(BCCDIR)\bin\bcc32 -oobj\$& @tmp $<
聽 聽$(BCCDIR)\bin\TLib mylib.lib -+obj\$&.obj /0 /P64,,
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Funciones propias en una lib
Posted: Sun Jan 01, 2017 08:03 PM

Gracias

Y una vez que la construya como la incluyo al .exe final?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Funciones propias en una lib
Posted: Sun Jan 01, 2017 08:09 PM

Como lo estas haciendo en tu primer mensaje de esta conversaci贸n

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Funciones propias en una lib
Posted: Sun Jan 01, 2017 08:20 PM

Ok

Volvere a probar

Gracias

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Funciones propias en una lib
Posted: Sun Jan 01, 2017 08:29 PM

El go.bat para ejecutar la creacion de una lib como queda?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Funciones propias en una lib
Posted: Sun Jan 01, 2017 08:37 PM

C:\SGE>mylib

C:\SGE>set path=C:\bcc7\bin

C:\SGEDP>make -mylib.mak
MAKE Version 5.41 Copyright (c) 1987, 2014 Embarcadero Technologies, Inc.
Fatal: Unable to open makefile
C:\SGE>

go.bat

set path=C:\bcc7\bin
make -mylib.mak

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Funciones propias en una lib
Posted: Mon Jan 02, 2017 08:14 AM
Te falta una "f"

make -fmylib.mak
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Funciones propias en una lib
Posted: Mon Jan 16, 2017 03:58 AM
El archivo mainwin.prg existe pero aun me da este error

C:\SGE>mylib

C:\SGE>set path=C:\bcc7\bin

C:\SGE>make -fmylib.mak
MAKE Version 5.41 Copyright (c) 1987, 2014 Embarcadero Technologies, Inc.
Fatal: '.\mainwin.prg' does not exist - don't know how to make it
C:\SGEDP>mylib

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Funciones propias en una lib
Posted: Mon Jan 16, 2017 10:05 AM

copia aqui el fichero make

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Funciones propias en una lib
Posted: Mon Jan 16, 2017 11:37 AM

BCDIR=c:\bcc7
HBDIR=c:\harbour
FWDIR=c:\fwh

.path.obj = .\obj
.path.prg = .\prg
.path.ch = $(FWDIR)\include;$(HBDIR)\include
.path.c = .\

PRG = \
.\mainwin.prg \
.\progra01.prg \
.\progra02.prg

PROJECT : mylib.lib

mylib.lib : $(PRG:.PRG=.OBJ)

.PRG.OBJ:
$(HDIR)\bin\harbour $< /N /W /es2 /Oobjh\ /I.\include;$(HDIR)\include > comp.log
$(BCCDIR)\bin\bcc32 -c -tWM -w-pia -I$(HDIR)\include -Iinclude -oobj\$& obj\$&.c
$(BCCDIR)\bin\TLib mylib.lib -+$@ /0 /P64,,

.C.OBJ:
echo -c -tWM -D__HARBOUR__ $(LEGACY) -w-pia > tmp
echo -I$(HDIR)\include;.\include; >> tmp
$(BCCDIR)\bin\bcc32 -oobj\$& @tmp $<
$(BCCDIR)\bin\TLib mylib.lib -+obj\$&.obj /0 /P64,,

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity