COMPILANDO COM O HARBOUR 3.2

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

Moderador: Moderadores

reinaldo
Usuário Nível 3
Usuário Nível 3
Mensagens: 105
Registrado em: 02 Mai 2005 13:08
Localização: santos/sp

COMPILANDO COM O HARBOUR 3.2

Mensagem por reinaldo »

Boa Tarde, amigos

Fui tentar fazer minha primeira compilação de um sistema completo.
O sistema compreende 1 programa principal e outros 32 programas.
A compilação acusou 2 tipos diferentes de erros. Em 2092 linhas.
Peço ajuda para soluciona-los.

1o. ERRO
.hbmk/win/mingw/telcli.o:TELCLI.c:(.text+0x0): multiple definition of `HB_FUN_TELCLI'
.hbmk/win/mingw/correia.o:correia.c:(.text+0x5480): first defined here
.hbmk/win/mingw/telcli.o:TELCLI.c:(.text+0x20): multiple definition of `HB_FUN_VMAIL'
.hbmk/win/mingw/correia.o:correia.c:(.text+0x54a0): first defined here

2o. ERRO
.hbmk/win/mingw/correia.o:correia.c:(.data+0x88): undefined reference to `HB_FUN_MOTDISPO'
.hbmk/win/mingw/correia.o:correia.c:(.data+0x318): undefined reference to `HB_FUN_MENUH'
.hbmk/win/mingw/correia.o:correia.c:(.data+0x5e8): undefined reference to `HB_FUN_VERCHK'

Os 2 erros ocorrem sempre que uma rotina chama outra rotina que está  em outro PRG

Não sei se consegui explicar direito

Anexo o HBP
Obrigado
Anexos
teste.txt
(317 Bytes) Baixado 167 vezes
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

COMPILANDO COM O HARBOUR 3.2

Mensagem por Itamar M. Lins Jr. »

Olá!
Veja que o módulo não tem FUNÇÃO: FUNCTION TELCLI
O nome do PRG é TELCLI.PRG, a mesma coisa para os demais.
Veja ai se não é isso. O PRG não tem a FUNÇÃO pq o nome da função é o próprio prg.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
reinaldo
Usuário Nível 3
Usuário Nível 3
Mensagens: 105
Registrado em: 02 Mai 2005 13:08
Localização: santos/sp

COMPILANDO COM O HARBOUR 3.2

Mensagem por reinaldo »

Olá Itamar
Obrigado por responder

Coloquei FUNCTION TELCLI na 1a. linha do TELCLI.PRG e deu o mesmo erro
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

COMPILANDO COM O HARBOUR 3.2

Mensagem por Itamar M. Lins Jr. »

Olá!
Mudou o nome do PRG ? telcli.prg para Clientes.prg por exemplo ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
reinaldo
Usuário Nível 3
Usuário Nível 3
Mensagens: 105
Registrado em: 02 Mai 2005 13:08
Localização: santos/sp

COMPILANDO COM O HARBOUR 3.2

Mensagem por reinaldo »

Mudei. Continua dando o erro

.hbmk/win/mingw/TCLI.o:TCLI.c:(.text+0x0): multiple definition of `HB_FUN_TELCLI'
.hbmk/win/mingw/correia.o:correia.c:(.text+0x53a0): first defined here

no TCLI.PRG a 1a. linha está assim:

FUNCTION TELCLI

A chamada no programa principal está assim:

telcli()

No HBP está assim:

-ocorreia
-inc
-compr=yes
-quiet
-lxhb
-lhbwin
-lhbct
-gui
-lhbblink
-lhbnf
correia
telac
telac2
telcli
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

COMPILANDO COM O HARBOUR 3.2

Mensagem por Itamar M. Lins Jr. »

Olá!
O PRG CORREIA começa como ?

Tem que começar com FUNCTION MAIN ou PROCEDURE MAIN

Código: Selecionar todos

Function Main
TelCli() //Aqui vc chama a função que está em outro PRG... Linkado junto, entendeu ?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

COMPILANDO COM O HARBOUR 3.2

Mensagem por Toledo »

Reuinaldo, a função TEL_CLI() está em 2 arquivos PRG, está no arquivo TCLI.PRG e também no arquivo CORREIA.PRG, então verifique isto e altere o nome desta função em um dos PRG. O mesmo ocorre com a função VMAIL().

As funçôes MOTDISPO(), MENUH() e VERCHK() que são chamadas no arquivo CORREIA.PRG não existe em nenhum dos PRG deste seu sistema.

Abraços
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

COMPILANDO COM O HARBOUR 3.2

Mensagem por Itamar M. Lins Jr. »

Olá!
está em 2 arquivos PRG, está no arquivo TCLI.PRG e também no arquivo CORREIA.PRG
Não é isso, falta a função MAIN.
O PRG CORREIA começa TelCLI() ai o sistema(harbour) diz que tem 2(duas)

Já expliquei para ele, corrigi ai meu post.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMPILANDO COM O HARBOUR 3.2

Mensagem por JoséQuintas »

Já se esqueceram do princípio básico?

Quando se compila um fonte, acabam sendo chamados automaticamente outros fontes, indicados em SET PROCEDURE.
Se colocar todos os fontes, vai acabar acusando duplicidade.

Pra compilar CADA PRG, isoladamente, e depois juntar no final, é usar -m
-m
compile module only
fonte a.prg------
set procedure to b
set procedure to c

Ao compilar o fonte a.prg, já serão incluídos os fontes b e c
Se colocar no HBP os 3 fontes, vai acusar duplicidade dos outros 2.
A não ser que compile usando -m
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

COMPILANDO COM O HARBOUR 3.2

Mensagem por JoséQuintas »

Quanto à falta de funções, isso indica a falta de fontes.
No mesmo exemplo, se compilar o A.PRG com -m, e já linqueditar, vai dar falta dos módulos B e C.

Olhe como compila em Clipper, e faça igual no Harbour.
Se tem a lista de fontes, coloque a mesma lista de fontes.

Se não tem "lixo" na pasta, pode usar hbmk2 *.prg
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

COMPILANDO COM O HARBOUR 3.2

Mensagem por Itamar M. Lins Jr. »

Olá!
A não ser que compile usando -m
Não falei disso para não confundir ainda mais. Tem que colocar MAIN, trocar o nome do PRG pois não foi foram criadas FUNCTION tal...
Forma antiga de programar, o nome do PRG é a função.
Não quis entrar nesses detalhes para não confundir.
Melhor ensinar a forma correta, hoje ninguém trata o nome do PRG como se fosse função.
Salvo engano. Como ele colocou os arquivos no HBP, não falei da possibilidade de SET PROCEDURE ...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMPILANDO COM O HARBOUR 3.2

Mensagem por JoséQuintas »

Itamar M. Lins Jr. escreveu:Salvo engano. Como ele colocou os arquivos no HBP, não falei da possibilidade de SET PROCEDURE ...
1o. ERRO
.hbmk/win/mingw/telcli.o:TELCLI.c:(.text+0x0): multiple definition of `HB_FUN_TELCLI'
.hbmk/win/mingw/correia.o:correia.c:(.text+0x5480): first defined here
.hbmk/win/mingw/telcli.o:TELCLI.c:(.text+0x20): multiple definition of `HB_FUN_VMAIL'
.hbmk/win/mingw/correia.o:correia.c:(.text+0x54a0): first defined here
TelCli() e o VMail(), elas estão em TELCLI.c e CORREIA.c

Sem o -m, correia.prg vai juntar telcli.prg e vmail.prg, gerando correia.c com todos juntos.

O -m já vai eliminar a possibilidade de que seja esse o problema, ou vai compilar sem erro, ou vai continuar acusando duplicidade.

Se for o que estou dizendo, ao alterar nome de função, vai acabar acusando duplicidade com outro nome.
Vai só dar trabalho, e pode complicar, se em outros lugares usar o nome original.

Melhor primeiro considerar que é a falta do -m, assim não tem mexida no fonte, e evita criar novos problemas.

Além do que..... se está acusando duplicidade, também acusaria no Clipper, e poderia significar lista de fontes errada.
Por essas e outras, melhor começar pelo -m, pra não mexer com fonte por enquanto.
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

COMPILANDO COM O HARBOUR 3.2

Mensagem por JoséQuintas »

Importante:

talvez precise compilar usando -rebuild, porque não vai ter alteração no fonte, e no HBP tem -inc, que indica pra só compilar o que for mexido.
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/
reinaldo
Usuário Nível 3
Usuário Nível 3
Mensagens: 105
Registrado em: 02 Mai 2005 13:08
Localização: santos/sp

COMPILANDO COM O HARBOUR 3.2

Mensagem por reinaldo »

Boa Tarde

Agradeço a boa vontade de todos tentando me ajudar.
Mas está difícil.
Talvez tenha sido muita pretensão minha querer iniciar no HB com sistema de transportes, com 32 prgs, 85.000 linhas de programação, que se interconectam entre si.
Procurar alguma literatura para iniciantes, e, usando o mesmo sistema, fazer uma função de cada vez.
Se eu pelo menos conseguisse entender esse erro:

.hbmk/win/mingw/pesq2.o:pesq2.c:(.text+0x20): multiple definition of `HB_FUN_TXCGCF'
.hbmk/win/mingw/correia.o:correia.c:(.text+0x4cc0): first defined here

quando TXCGCF é uma rotina de validação de CNPJ/CPF que realmente está no PESQ2.PRG mas não está no CORREIA.PRG.
o único link que liga tudo é que o CORREIA.PRG chama os PRGS PESQ2 e TELCLI e os 2 usam a rotina TXCGCF.

Entender isso é entender a lógica da estrutura da programação do HB.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMPILANDO COM O HARBOUR 3.2

Mensagem por JoséQuintas »

reinaldo escreveu:Se eu pelo menos conseguisse entender esse erro:

.hbmk/win/mingw/pesq2.o:pesq2.c:(.text+0x20): multiple definition of `HB_FUN_TXCGCF'
.hbmk/win/mingw/correia.o:correia.c:(.text+0x4cc0): first defined here
Você teve esse erro e outros.

Esse erro é porque encontrou funções repetidas:

- pode ser pela falta de -m na compilação
- pode ser pela falta de -n na compilação
- pode ser porque tem função repetida mesmo

O outro erro é o contrário: estão faltando funções.
Isso significa que tem mais fontes, ou, de repente, está usando uma LIB externa com essas funções.

A lógica do Harbour é extremamente simples, exatamente igual do Clipper:

Precisa compilar os fontes do aplicativo.
Tá faltando fonte na sua compilação, e pode conter fonte que não é usado.

O que tá faltando, tá acusando erro que falta, precisa adicionar
O que tá sobrando, tá acusando erro de duplicidade, o que talvez seja por causa dos parâmetros na compilação, testa acrescentando os parâmetros, ou remova o que está repetido.

Olhe a compilação do Clipper e coloque igual no Harbour, não queira fazer diferente que não dá.
Se no Clipper não acusa esses erros, é só fazer igual.
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/
Responder