Página 1 de 1

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Enviado: 04 Jul 2021 15:29
por sergiosouzalima
Olá amigos!!

Tenho a missão de migrar um sistema feito em Clipper para Harbour.

O sistema não é meu e no momento tenho os PRGs do sistema e também uma DLL específica do sistema.

O sistema em Clipper funciona hoje em dia no Windows10.

No momento o problema é a DLL. Como posso usa-la para gerar o sistema em Harbour?

Primeiro estou tentando gerar aqui no meu ambiente Linux. Depois, vou para o Windows.

01) Meu arquivo hbp está assim

Código: Selecionar todos

#
# $Id: compila.hbp $
#
-w0
-gc3
-osgcexe
-lhbct

hbct.hbc

-l/home/sergio/workspace/github/sergiosouzalima@gmail.com/sgc/prg/SGCG0.DLL

SGC.prg
PNEWACCE.prg
PVENDEDO.prg
... 
..
2) Meu ambiente está assim:
$ harbour --version
Harbour 3.2.0dev (r1712151853)
Copyright (c) 1999-2016, http://harbour-project.org/
$ gcc --version
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.[/code]

3) Ao compilar, a saída está abaixo (mantive os trechos mais importantes):

Código: Selecionar todos

$ hbmk2 compila.hbp
...
..
PACCXUSR.c:(.text+0x1360): multiple definition of `HB_FUN_PROCES_B6'; /tmp/hbmk_BBR3e1.dir/SGC.o:SGC.c:(.text+0x296110): first defined here
/usr/bin/ld: /tmp/hbmk_BBR3e1.dir/PACCXUSR.o: in function `HB_FUN_LOSCHEQU6B':
PACCXUSR.c:(.text+0x2ac0): multiple definition of `HB_FUN_LOSCHEQU6B'; /tmp/hbmk_BBR3e1.dir/SGC.o:SGC.c:(.text+0x136fb0): first defined here
/home/sergio/workspace/github/sergiosouzalima@gmail.com/sgc/prg/SGCG0.DLL: file not recognized: file format not recognized
collect2: error: ld returned 1 exit status
hbmk2[compila]: Error: Running linker. 1
gcc '/tmp/hbmk_BBR3e1.dir/SGC.o' '/tmp/hbmk_BBR3e1.dir/PNEWACCE.o' '/tmp/hbmk_BBR3e1.dir/PVENDEDO.o' '/tmp/hbmk_BBR3e1.dir/PESTADOS.o' '/tmp/hbmk_BBR3e1.dir/PTIPCLIE.o' '/tmp/hbmk_BBR3e1.dir/PRECAUDA.o' '/tmp/hbmk_BBR3e1.dir/PCONVENI.o' '/tmp/hbmk_BBR3e1.dir/PMOVILES.o' '/tmp/hbmk_BBR3e1.dir/PNODOS.o' '/tmp/hbmk_BBR3e1.dir/PSERVICI.o' '/tmp/hbmk_BBR3e1.dir/PMENSAJE.o' '/tmp/hbmk_BBR3e1.dir/PPARAMET.o' '/tmp/hbmk_BBR3e1.dir/PCLIENTE.o' '/tmp/hbmk_BBR3e1.dir/PCTOSUSC.o' '/tmp/hbmk_BBR3e1.dir/PSOLSERV.o' '/tmp/hbmk_BBR3e1.dir/PMATER.o' '/tmp/hbmk_BBR3e1.dir/PSITCOBR.o' '/tmp/hbmk_BBR3e1.dir/PCARTCOB.o' '/tmp/hbmk_BBR3e1.dir/PRECLAMO.o' '/tmp/hbmk_BBR3e1.dir/PPAGOS.o' '/tmp/hbmk_BBR3e1.dir/PBANCOS.o' '/tmp/hbmk_BBR3e1.dir/PLOTES.o' '/tmp/hbmk_BBR3e1.dir/PCARTOLA.o' '/tmp/hbmk_BBR3e1.dir/PGENFACT.o' '/tmp/hbmk_BBR3e1.dir/PRESULFA.o' '/tmp/hbmk_BBR3e1.dir/PNEWSUSC.o' '/tmp/hbmk_BBR3e1.dir/PGENCORT.o' '/tmp/hbmk_BBR3e1.dir/PVERCORT.o' '/tmp/hbmk_BBR3e1.dir/LSRVREAL.o' '/tmp/hbmk_BBR3e1.dir/PPAGOCNV.o' '/tmp/hbmk_BBR3e1.dir/PINGCORT.o' '/tmp/hbmk_BBR3e1.dir/LCHEQUES.o' '/tmp/hbmk_BBR3e1.dir/LVENTASD.o' '/tmp/hbmk_BBR3e1.dir/PCOBRANZ.o' '/tmp/hbmk_BBR3e1.dir/PCLIEPUB.o' '/tmp/hbmk_BBR3e1.dir/LPARCOBR.o' '/tmp/hbmk_BBR3e1.dir/LSRVPEND.o' '/tmp/hbmk_BBR3e1.dir/LCARTAS.o' '/tmp/hbmk_BBR3e1.dir/PPAGARE.o' '/tmp/hbmk_BBR3e1.dir/LCONTRAT.o' '/tmp/hbmk_BBR3e1.dir/LCARTAD.o' '/tmp/hbmk_BBR3e1.dir/PDBCRAJU.o' '/tmp/hbmk_BBR3e1.dir/PCOPIABA.o' '/tmp/hbmk_BBR3e1.dir/PACTCTAS.o' '/tmp/hbmk_BBR3e1.dir/LAJUSTES.o' '/tmp/hbmk_BBR3e1.dir/LDIRECCI.o' '/tmp/hbmk_BBR3e1.dir/LSRVACTA.o' '/tmp/hbmk_BBR3e1.dir/LVENTAS.o' '/tmp/hbmk_BBR3e1.dir/PCARTERA.o' '/tmp/hbmk_BBR3e1.dir/LSALDOS.o' '/tmp/hbmk_BBR3e1.dir/PDIACAJA.o' '/tmp/hbmk_BBR3e1.dir/LDEUDAS.o' '/tmp/hbmk_BBR3e1.dir/LSALCONT.o' '/tmp/hbmk_BBR3e1.dir/PDBCRAJP.o' '/tmp/hbmk_BBR3e1.dir/PCARTOPE.o' '/tmp/hbmk_BBR3e1.dir/PPROMOCI.o' '/tmp/hbmk_BBR3e1.dir/PCASTIGO.o' '/tmp/hbmk_BBR3e1.dir/PMONITOR.o' '/tmp/hbmk_BBR3e1.dir/LSALDOSC.o' '/tmp/hbmk_BBR3e1.dir/PNULOS.o' '/tmp/hbmk_BBR3e1.dir/PVARCLIE.o' '/tmp/hbmk_BBR3e1.dir/PZONAS.o' '/tmp/hbmk_BBR3e1.dir/LFORMREC.o' '/tmp/hbmk_BBR3e1.dir/LVERISAL.o' '/tmp/hbmk_BBR3e1.dir/POBRAS.o' '/tmp/hbmk_BBR3e1.dir/LSRVOBRA.o' '/tmp/hbmk_BBR3e1.dir/POBRNOCL.o' '/tmp/hbmk_BBR3e1.dir/PESTILEG.o' '/tmp/hbmk_BBR3e1.dir/PDIRILEG.o' '/tmp/hbmk_BBR3e1.dir/POFFLINE.o' '/tmp/hbmk_BBR3e1.dir/LNOTIFIC.o' '/tmp/hbmk_BBR3e1.dir/LRESUCAR.o' '/tmp/hbmk_BBR3e1.dir/PPROGRAM.o' '/tmp/hbmk_BBR3e1.dir/LCERTDEU.o' '/tmp/hbmk_BBR3e1.dir/LCLIPREM.o' '/tmp/hbmk_BBR3e1.dir/PCHEQUES.o' '/tmp/hbmk_BBR3e1.dir/LCHEQHIS.o' '/tmp/hbmk_BBR3e1.dir/PINICONC.o' '/tmp/hbmk_BBR3e1.dir/PDEVOLUC.o' '/tmp/hbmk_BBR3e1.dir/PINICIAL.o' '/tmp/hbmk_BBR3e1.dir/PSRVBASI.o' '/tmp/hbmk_BBR3e1.dir/LSRVROBR.o' '/tmp/hbmk_BBR3e1.dir/PCTRLFAC.o' '/tmp/hbmk_BBR3e1.dir/PCTRLVER.o' '/tmp/hbmk_BBR3e1.dir/PMASIVO.o' '/tmp/hbmk_BBR3e1.dir/LNOTIFI2.o' '/tmp/hbmk_BBR3e1.dir/PPVIEW.o' '/tmp/hbmk_BBR3e1.dir/PGENFAC2.o' '/tmp/hbmk_BBR3e1.dir/PRESULF2.o' '/tmp/hbmk_BBR3e1.dir/PCIERRES.o' '/tmp/hbmk_BBR3e1.dir/PCORTLOT.o' '/tmp/hbmk_BBR3e1.dir/PCONTRAT.o' '/tmp/hbmk_BBR3e1.dir/LPUBCONT.o' '/tmp/hbmk_BBR3e1.dir/PMONITO2.o' '/tmp/hbmk_BBR3e1.dir/PCORPLOT.o' '/tmp/hbmk_BBR3e1.dir/LCLIPRE2.o' '/tmp/hbmk_BBR3e1.dir/LNOTIFI3.o' '/tmp/hbmk_BBR3e1.dir/PCASTIG2.o' '/tmp/hbmk_BBR3e1.dir/PTRACONT.o' '/tmp/hbmk_BBR3e1.dir/PGENPUB.o' '/tmp/hbmk_BBR3e1.dir/LENTFACT.o' '/tmp/hbmk_BBR3e1.dir/PCORRELA.o' '/tmp/hbmk_BBR3e1.dir/LSRVOBVE.o' '/tmp/hbmk_BBR3e1.dir/POBRNCVE.o' '/tmp/hbmk_BBR3e1.dir/LSRVREVE.o' '/tmp/hbmk_BBR3e1.dir/LFAPRCOB.o' '/tmp/hbmk_BBR3e1.dir/LPAGOCOB.o' '/tmp/hbmk_BBR3e1.dir/PVERCOSO.o' '/tmp/hbmk_BBR3e1.dir/LENTBOLE.o' '/tmp/hbmk_BBR3e1.dir/PTRANSBA.o' '/tmp/hbmk_BBR3e1.dir/PPREPDAT.o' '/tmp/hbmk_BBR3e1.dir/PPAGSITC.o' '/tmp/hbmk_BBR3e1.dir/LVCTOREN.o' '/tmp/hbmk_BBR3e1.dir/PUSRLOGS.o' '/tmp/hbmk_BBR3e1.dir/PACCXUSR.o'   -Wl,--start-group -lhbct -lhbcplr -lhbdebug -lharbour '/home/sergio/workspace/github/sergiosouzalima@gmail.com/sgc/prg/SGCG0.DLL'  -Wl,--end-group -osgcexe -L/usr/lib/harbour

hbmk2: Error: Referenced, missing, but unknown function(s): ELORDEN_01(),
       PNEWACCE(), RET_DAT_01(), MUESTRA_01(), REGRABA_01(), PANTALL_01(),
       DATOGEN_01(), XLIX(), MODPSWD_01(), XLINEA(), XITE(), INGPSWD_01(),
       XITMENU(), PWDIN(), PWDOUT(), NOES(), XXITE(), LOSACCESO(),
       ELORDEN_39(), PVENDEDO(), PANTALL_39(), LOSVENDE(), DATOGEN_39(),
       INGVEN_39(), MODVEN_39(), ELORDEN_40(), PESTADOS(), PANTALL_40(),
       LOSESTADOS(), DATOGEN_40(), INGEST_40(), MODEST_40(), ELORDEN_38(),
...
..

Já busquei informações aqui no Forum mas por enquanto sem sucesso.

Qualquer ajuda será bem-vinda :-)


Obrigado!!
Sergio Lima

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Enviado: 04 Jul 2021 18:38
por JoséQuintas
sergiosouzalima escreveu: Tenho a missão de migrar um sistema feito em Clipper para Harbour.
O sistema não é meu e no momento tenho os PRGs do sistema e também uma DLL específica do sistema.
DLL é praticamente o mesmo que EXE.
Sem os fontes da DLL, nada feito.
Mas confirme se é realmente uma DLL, ou se é outra coisa renomeada pra DLL.

Muito poucas pessoas usaram DLL em Clipper.
Eu cheguei a usar, é um recurso disponível no BLINKER.

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Enviado: 05 Jul 2021 10:16
por sergiosouzalima
Quintas, obrigado pela resposta.

Dei um "cat" no arquivo DLL (imagem). Para mim é uma DLL mesmo.

O que acha?

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Enviado: 05 Jul 2021 12:21
por JoséQuintas
sergiosouzalima escreveu:Dei um "cat" no arquivo DLL (imagem). Para mim é uma DLL mesmo.
O que acha?
Tá me dando a impressão de que pode ser um DBF, ou arquivo MEM.

tente acessar pelo DBU ou outro que acesse DBF, ou num programa simples

Código: Selecionar todos

USE SGC60.dll
browse

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Enviado: 05 Jul 2021 12:27
por JoséQuintas
estrutura:
DIRE
FONO
EMPR
PATH
CIUD

talvez endereço, telefone, empresa, path, e cidade, em espanhol
e embaixo, o conteúdo dos registros.
Por ser DBF, a estrutura é "meio binária", e depois os registros como texto normal, que não ficam ajustados um por linha, porque é direto o conteúdo sem qualquer tipo de alinhamento.

Por isso me parece DBF.

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Enviado: 05 Jul 2021 14:12
por Kapiaba
Para confirmar se é uma uma DLL - DYNAMIC LOAD LIBRARY, use o WORKSHOP.EXE ou o PELLESC.EXE ou um EDITOR de RECURSOS de sua preferência.

Abs.

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Enviado: 05 Jul 2021 18:32
por sergiosouzalima
Quintas, você está certo!

É um DBF mesmo (imagem).
Screen Shot 2021-07-05 at 6.15.01 PM.png
Sendo assim, vou continuar procurando essas procedures/functions não encontradas na compilação.

Podem estar dentro dos próprios PRGs mas por algum motivo, na compilação o Harbour não acha a referência.

Obrigado Quintas e Kapiaba!