Página 1 de 2

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 29 Ago 2020 00:22
por Linguagemclipper
Estou tentando usar as DLLs, mas estou tento problemas com as LIBs
I:/HB32/lib/win/mingw/libbgd.lib: file not recognized: File format not recognized

Na pasta I:\hb32\lib\win\mingw tem uma libFreeImage.a, mas não ví nada que pudesse ser relacionado à BGD.

No xHarbour era só eu usar: fi_lib.lib; gdlib.lib; libbgd.lib e libfi.lib.

Para criar a libbgd.lib:
impdef -a libbgd.def bgd.dll
implib -a libbgd.lib libbgd.def

Para criar a libfi.lib:
impdef -a libfi.def freeimage.dll
implib -a libfi.lib libfi.def

Enfim, como faço para utilizar essas DLLs com o HB32?

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 29 Ago 2020 01:16
por Claudio Soto
Hola,
si no entendí mal lo que quieres es usar un archivo de biblioteca .lib con hb y el compilador mingw.

Los compiladores gcc (como mingw) utilizan un formato de biblioteca distinto al .lib, es decir utilizan el formato de librería .a

Para poder usar las .lib con mingw tienes que convertirla al formato tipo .a con alguna herramienta.

Ver por ejemplo
https://code.google.com/archive/p/lib2a/

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 29 Ago 2020 10:50
por Linguagemclipper
Gracias, yo he bajado el tool, los archivos .a fueram creados y compilados sin error, pero no funcionó.
En xHarbour habia 2 libs para BGD e 2 libs para FreeImage. Esto me quedó una cierta duda.
Entonces como LIB2A piede un archivo .DEF pensé que fuesen los archivos creados desde este camino:

Código: Selecionar todos

impdef -a libbgd.def bgd.dll
implib -a libbgd.lib libbgd.def
Alfinal, yo intenté con la otra lib también pero dio un error.
He percebido que esto usa la BCC55 mientras HB32 usa GCC...
Todavía, configuré el archivo LIB2A com la lib supra, dll y def. Lo arquivo .a fué creado pero no funcionó.
Estoy piensando en las otras libs... xHarbour necesita de GDLIB.LIB y LIBBGD.LIB para usar BGD.DLL mientras Harbour solo nececita de una lib? Porque solo pude convertir LIBBGD.LIB para libbgd.a y como queda la otra lib?

Mi archivo .HBP contiene:

Código: Selecionar todos

#DEBUG
-b
libhbdebug.a

#BGD e FreeImage
libbgd.a
libFreeImage.a

#DEFINES
-D__GD__
-D__FREEIMAGE__
Otra cosa, yo necessito definir las #DEFINES supra pero no sé si el problema és esto (si yo hice cierto) o las libs. Voy a investigar con DEBUG estaba usando -inc que no dejaba compilar.
Estoy migrando una herramienta que crié en xHarbour para Harbour que nececita de estas DLLs.

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 29 Ago 2020 11:15
por Linguagemclipper
Descobrí que precisava linkar hbfimage.hbc para usar a Freeimage.
Só falta a BGD.

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 29 Ago 2020 11:39
por Claudio Soto

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 29 Ago 2020 12:23
por Linguagemclipper
Freeimage és solo poner hbfimage.hbc y libFreeImage.a en la compilación con hbmk2 y está listo!
Yo necesito saber como hacer ahora con BGD.DLL porque queda la funcción TCode():New().

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 29 Ago 2020 13:43
por Claudio Soto
Las .DLL no se linkan dentro del ejecutable, se llaman las funciones desde el programa como lo hacías en xhb, con callDll.
Si quieres linkarla debes convertir de .dll a .lib o .a

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 29 Ago 2020 13:56
por Linguagemclipper
Sí amigo, ya lo sé.
No lo sé como hacer para trabajar con GD y HB32. Encontré un enlace en ese forum: http://www.hmgforum.com/viewtopic.php?f ... bgd#p17559
Pero no me ayudó mucho porque no tengo el fichero \contrib\hbgd\tests\ en HB32. La persona usaba HB30.
Bajé todos los arquivos del http://gnuwin32.sourceforge.net/packages/gd.htm pero no tengo gd.ch ni hbgd.
Almenos logré la libgd.dll.a.

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 29 Ago 2020 17:35
por Claudio Soto
Acá te dejo el contrib de hb

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 29 Ago 2020 22:57
por Linguagemclipper
Vale! Muchas gracias!

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 30 Ago 2020 10:47
por Linguagemclipper
Hola Claudio, desafortunadamente no logré exito.
En mi .HBP puse:

Código: Selecionar todos

#BGD e FreeImage
hbgd.hbc
hbfimage.hbc
Pero me dio error con la GD:
I:/hb32/comp/mingw/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lhbgd
Yo busqué en ese camiño y encontré listo las LIBs correspondientes del xHarbour para FreeImage:
  • libffi.a
    libffi.dll.a
Pero nada de GD.
Entonces y fué en la carpeta: I:\hb32\contrib\hbgd y ejecuté hbmk2 hbgd.hbp:
I:\hb32\contrib\hbgd>HBMK2 HBGD.HBP
hbmk2[HBGD]: Atenção: Faltando a dependência: gd
Entonces puse todos os archivos bajados con las dependencias etc en la misma carpeta pero el error continua:
I:\hb32\contrib\hbgd>DIR
O volume na unidade I é RAID0
O Número de Série do Volume é E879-3727

Pasta de I:\hb32\contrib\hbgd

30/08/2020 09:49 <DIR> .
30/08/2020 09:49 <DIR> ..
30/08/2020 09:49 <DIR> bin
30/08/2020 09:49 <DIR> contrib
30/06/2020 13:01 <DIR> doc
30/06/2020 13:01 5.158 gd.ch
30/06/2020 13:01 7.239 gd.prg
30/06/2020 13:01 9.018 gdbar.prg
30/06/2020 13:01 17.222 gdbarcod.prg
30/06/2020 13:01 28.627 gdchart.prg
30/06/2020 13:01 28.983 gdimage.prg
30/06/2020 13:01 64.157 gdwrp.c
30/06/2020 13:01 221 hbgd.hbc
30/06/2020 13:01 448 hbgd.hbp
30/06/2020 13:01 3.794 hbgd.hbx
30/08/2020 09:49 <DIR> include
30/08/2020 09:49 <DIR> lib
30/08/2020 09:49 <DIR> man
30/08/2020 09:49 <DIR> manifest
30/06/2020 13:01 <DIR> tests
10 arquivo(s) 164.867 bytes
10 pasta(s) 310.191.587.328 bytes disponíveis

I:\hb32\contrib\hbgd>HBMK2 HBGD.HBP
hbmk2[HBGD]: Atenção: Faltando a dependência: gd
Y entonces todavía nada.
Así como había 2 archivos del xHarbour para FreeImage encontré 2 para Harbour en I:\hb32\comp\mingw\lib. Sin embargo no estou logrando las benditas libs del GD.

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 30 Ago 2020 11:21
por JoséQuintas
Acho que é igual no XHarbour:

- Tem contribuição que só vai ser gerada se baixar os arquivos adicionais, que não fazem parte do Harbour.
- Tem contribuição que só vai funcionar na máquina destino se copiar exatamente as mesmas DLLs usadas na máquina de desenvolvimento
- E convém lembrar que pra cada uma delas pode existir versão 32 ou 64 bits, tem que ser igual à versão do Harbour sendo usada.

Acho que são assim: freeimage, libcurl, openssl, hbmysql, e outras
NÃO uso nada disso, então não sei dizer sobre detalhes.

As LIBs costumam ser separadas por compilador: lib\win\mingw, lib\win\mingw64, lib\win\bcc, lib\win\msvc, lib\win\msvc64
Isso permite ter na máquina vários compiladores C ao mesmo tempo, inclusive 32 e 64 bits.

O importante é:
- precisa do harbour.exe
- precisa de um compilador C
- precisa das LIBs geradas pra o compilador C que vai usar

E se precisa de LIB especial, dessas que dependem de algo mais, ou baixa uma versão pronta, ou baixa o que precisa pra gerar a contrib.

Ao mesmo tempo que isso é muito chato, se por acaso um compilador C deixar de existir, podemos usar o outro.

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 01 Set 2020 13:09
por Linguagemclipper
O problema é baixar o que precisa para gerar essa contrib hbgd, já baixei um monte de coisa e não compila essa bendita lib.
Eu usava o TortoiseCVS para baixar o xHarbour antigamente e tinha tudo prontinho lá. http://www.tortoisecvs.org/
Hoje em dia parece que estão usando o github no lugar to CVS... Lá no github não encontro essa contrib pronta.

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 01 Set 2020 14:34
por JoséQuintas
É por essas e outras, que o Harbour 3.4 é the best.
d:\github\harbour34\contrib\hbgd>HBMK2 -w3 -es2 -m -n *.hbp -strip -compr -workdir=c:\temp -q -Id:\cdrom\FONTES\build\
hbmk2: Processando opções do ambiente: -comp=mingw
hbmk2: Processando arquivo de configuração: d:\harbour\bin\hbmk.hbc
hbmk2 [hbgd]: Atenção: Faltando a dependência: gd
hbmk2 [hbgd]: Hint: Aponte as variavéis de ambiente HBMK_WITH_GD ou HB_WITH_GD
para o diretório que contém cabeçalho 'gd.h'
hbmk2 [hbgd]: Dica: URL(s) de Projeto: https://libgd.github.io/
Na compilação mostrou o link, vai lá baixa, salva numa pasta, e cria HB_WITH_GD=nome da pasta
Depois compila de novo.

BGD.DLL e FREEIMAGE.DLL com HARBOUR 3.2

Enviado: 01 Set 2020 15:34
por asimoes
Quintas,

Onde o harbour indica o projeto gd não tem a dll necessária para criar a lib, só aqui: https://sourceforge.net/projects/gnuwin ... /2.0.33-1/ gd-2.0.33-1-bin.zip