COMPILANDO COM O HARBOUR 3.2
Moderador: Moderadores
COMPILANDO COM O HARBOUR 3.2
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
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
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
COMPILANDO COM O HARBOUR 3.2
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.
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.
Itamar M. Lins Jr.
COMPILANDO COM O HARBOUR 3.2
Olá Itamar
Obrigado por responder
Coloquei FUNCTION TELCLI na 1a. linha do TELCLI.PRG e deu o mesmo erro
Obrigado por responder
Coloquei FUNCTION TELCLI na 1a. linha do TELCLI.PRG e deu o mesmo erro
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
COMPILANDO COM O HARBOUR 3.2
Olá!
Mudou o nome do PRG ? telcli.prg para Clientes.prg por exemplo ?
Saudações,
Itamar M. Lins Jr.
Mudou o nome do PRG ? telcli.prg para Clientes.prg por exemplo ?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
COMPILANDO COM O HARBOUR 3.2
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
.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
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
COMPILANDO COM O HARBOUR 3.2
Olá!
O PRG CORREIA começa como ?
Tem que começar com FUNCTION MAIN ou PROCEDURE MAIN
Saudações,
Itamar M. Lins Jr.
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 ?
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
COMPILANDO COM O HARBOUR 3.2
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
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
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
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
COMPILANDO COM O HARBOUR 3.2
Olá!
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.
Não é isso, falta a função MAIN.está em 2 arquivos PRG, está no arquivo TCLI.PRG e também no arquivo CORREIA.PRG
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.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
COMPILANDO COM O HARBOUR 3.2
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
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
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
fonte a.prg-------m
compile module only
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
COMPILANDO COM O HARBOUR 3.2
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
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/
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/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
COMPILANDO COM O HARBOUR 3.2
Olá!
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.
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...A não ser que compile usando -m
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.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
COMPILANDO COM O HARBOUR 3.2
Itamar M. Lins Jr. escreveu:Salvo engano. Como ele colocou os arquivos no HBP, não falei da possibilidade de SET PROCEDURE ...
TelCli() e o VMail(), elas estão em TELCLI.c e CORREIA.c1o. 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
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
COMPILANDO COM O HARBOUR 3.2
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.
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/
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/
COMPILANDO COM O HARBOUR 3.2
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.
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.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
COMPILANDO COM O HARBOUR 3.2
Você teve esse erro e outros.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
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/
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/
