Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

sergiosouzalima
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 26 Out 2020 11:25
Localização: São Paulo / SP

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Mensagem 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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
sergiosouzalima
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 26 Out 2020 11:25
Localização: São Paulo / SP

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Mensagem por sergiosouzalima »

Quintas, obrigado pela resposta.

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

O que acha?
Anexos
cat no arquivo DLL
cat no arquivo DLL
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Mensagem 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.
sergiosouzalima
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 26 Out 2020 11:25
Localização: São Paulo / SP

Migrar Clipper para Harbour (Como usar DLLs do Clipper)

Mensagem 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!
Responder