Página 1 de 3

Erro compilação quando insiro mais prg

Enviado: 06 Dez 2025 11:11
por LDOSISTEMAS
Estou fazendo um projeto e a algum tempo sempre que insiro um nova prg na compilação ele passou a dar a seguinte mensagem ao final :

Código: Selecionar todos

HB_FUN_GETXMDF'
.hbmk/win/mingw/VDFE01F9.o:VDFE01F9.c:(.data+0x98): undefined reference to `HB_F
UN_EMAILMDFE'
.hbmk/win/mingw/SAI_98F9.o:SAI_98F9.c:(.data+0x288): undefined reference to `HB_
FUN_LEXML'
.hbmk/win/mingw/SAI_03F9.o:SAI_03F9.c:(.data+0x328): undefined reference to `HB_
FUN_AUTO_SENHA'
.hbmk/win/mingw/SAI_97F9.o:SAI_97F9.c:(.data+0x168): undefined reference to `HB_
FUN_LEXML'
.hbmk/win/mingw/NFECF9.o:NFECF9.c:(.data+0x2a8): undefined reference to `HB_FUN_
GETXTNF'
.hbmk/win/mingw/PTEN01F9.o:PTEN01F9.c:(.data+0x2d8): undefined reference to `HB_
FUN_RATEIO'
.hbmk/win/mingw/AUTNFEF9.o:AUTNFEF9.c:(.data+0x38): undefined reference to `HB_F
UN_GETXTNF'
.hbmk/win/mingw/VAIL01F9.o:VAIL01F9.c:(.data+0xa8): undefined reference to `HB_F
UN_MANDAEMAIL'
.hbmk/win/mingw/VCCE01F9.o:VCCE01F9.c:(.data+0x468): undefined reference to `HB_
FUN_LEXML'
.hbmk/win/mingw/VIEN01F9.o:VIEN01F9.c:(.data+0x128): undefined reference to `HB_
FUN_LEXML'
collect2.exe: error: ld returned 1 exit status
hbmk2[industri]: Erro: Executando linkeditor. 1
Essas funções todas estão no arquivo prg gasp40hb.prg ele esta no hbp mas por algum motivo parece não estar enxergando ao final da compilação. Ai tenho que retirar os prg novos.
Eu utilizo o gaspro para gerar os fontes e converto com gas4harbour para compilar. o projeto tem 524 prg. Tem alguma forma de contornar é algum limite do harbour?
Estou usando o 3.2
Meu hbp esta assim:

Código: Selecionar todos

-oindustri
-inc
-prgflag=/l
-compr=yes
-quiet
-lxhb
-lhbwin
-lhbct
-gui
-mt
-strip
-lhbziparc
-lhbmzip
-lminizip
-lhbnf
GASP40HB.PRG
GETSYS.PRG
C:\sefazclass-master\source\*.prg
libs=C:\hb32\contrib\hbhpdf\hbhpdf.hbc hbzebra.hbc hbwin.hbc hbct.hbc
INDUSTRI.PRG
CHKNFEF9.PRG
PED_01F9.PRG
PED_02F9.PRG
ORCAMEN.PRG
VALITEF9.PRG
ITP_06F9.PRG
PRCARF9.PRG
EDTCOMF9.PRG
ITP_09F9.PRG
COMPF9.PRG
BCARF9.PRG
TEMCXF9.PRG
OBSF9.PRG
OBSPEDF9.PRG
ORC_R018.PRG
QTEPEDF9.PRG
R02001F9.PRG
R02002F9.PRG
PED_03F9.PRG
PESNOF9.PRG
PEDPESF9.PRG
SAI_01F9.PRG
TPFRETF9.PRG
OBSMEMF9.PRG
VALPLAF9.PRG
PEDIDOS.PRG
MAXITEF9.PRG
INCLUIF9.PRG
ITP_10F9.PRG
EXCLUIF9.PRG
ALTERAF9.PRG
TELAF9.PRG
VRPARCF9.PRG
SDU_03F9.PRG
R01803F9.PRG
IND_R018.PRG
BOLDF9.PRG
VOLTF9.PRG
RDSF01F9.PRG
OBPROF9.PRG
VLOBSF9.PRG
IND_R073.PRG
R02003F9.PRG
VLICOMF9.PRG
PEDFOLH1.PRG
R01901F9.PRG
RLH301F9.PRG
R08103F9.PRG
RLH501F9.PRG
PEDRESU.PRG
VOLTLF9.PRG
R01801F9.PRG
ORCOBSF9.PRG
DESCPEF9.PRG
ORCPEDSF.PRG
ZERAF9.PRG
RTSF01F9.PRG
R10501F9.PRG
R10502F9.PRG
ORCPEDJM.PRG
BXF9.PRG
PED_JAGU.PRG
RAG201F9.PRG
PEDJAGU.PRG
PEDPEDSF.PRG
PETABERT.PRG
COITPEDI.PRG
ROMANEIO.PRG
ROM_01F9.PRG
IND_R027.PRG
VOLF9.PRG
RELCARGA.PRG
VLINF9.PRG
IND_R045.PRG
VOLNF9.PRG
PECAPPRO.PRG
IND_R046.PRG
IND46GR.PRG
PEDACF9.PRG
PCPROUNI.PRG
ZEF9.PRG
SLITPEDI.PRG
RLNECOMP.PRG
REL_P001.PRG
ULTI01F9.PRG
V00102F9.PRG
ESTAVEND.PRG
AVANF9.PRG
QUEBF9.PRG
RCLI01F9.PRG
REL_PRO1.PRG
REL_PROD.PRG
PECOMPRA.PRG
PEDCOMPR.PRG
ESMINIMO.PRG
AJU_NFEN.PRG
ENT_02F9.PRG
ENT_01F9.PRG
ENT_03F9.PRG
ENTRADAS.PRG
P00309F9.PRG
IT__04F9.PRG
IT__05F9.PRG
ITE_09F9.PRG
ITE_05F9.PRG
ITE_06F9.PRG
ITE_07F9.PRG
ITE_08F9.PRG
ITE_11F9.PRG
T55GNRE.PRG
MDF_03F9.PRG
MDF_02F9.PRG
STATUSF9.PRG
MDF_01F9.PRG
MDFE.PRG
CNPJVAF9.PRG
MDR_01F9.PRG
NFM_01F9.PRG
MDC_01F9.PRG
SELMDFE.PRG
AUTMDFE.PRG
ATMDFEF9.PRG
REIMDFE.PRG
VDFE01F9.PRG
REL_MDFE.PRG
SAI_98F9.PRG
SAI_99F9.PRG
SAI_08F9.PRG
SC__02F9.PRG
OUTCTEF9.PRG
SC__09F9.PRG
SC__03F9.PRG
SC__07F9.PRG
PAGFRF9.PRG
FRETF9.PRG
SC_CTRC.PRG
SAI_96F9.PRG
SAI_11F9.PRG
SAI_03F9.PRG
SAI_10F9.PRG
SAI_04F9.PRG
SAI_97F9.PRG
SIT_01F9.PRG
SAI_05F9.PRG
SAI_02F9.PRG
SAIDAS.PRG
VLCHNFF9.PRG
VAEMF9.PRG
ITE_28F9.PRG
P00304F9.PRG
ITE_16F9.PRG
ITE_32F9.PRG
ITE_02F9.PRG

Re: Erro compilação quando insiro mais prg

Enviado: 06 Dez 2025 11:48
por Itamar M. Lins Jr.
Olá!
Veja o nome da função:
Function UM_NOME_BEM_LONGO_AQUI
No clipper, só pega parte do nome. UM_NOME_BEM() não pega o resto. Veja se é isso.
No Harbour ele vê, TODO o nome da FUNÇÃO.

Re: Erro compilação quando insiro mais prg

Enviado: 06 Dez 2025 12:44
por LDOSISTEMAS
Acho que não porque se tiro os novos PRG ele já compila normalmente e as funções que ele mostra estão no arquivo que não é retirado.

Re: Erro compilação quando insiro mais prg

Enviado: 06 Dez 2025 13:33
por Itamar M. Lins Jr.
Olá!
Mas vc conferiu isso ?
Mostra como está lá a função e como está sendo chamada. É bem simples.
A função existe e nenhum .prg chama, quando chama dá erro. Só pode ser o nome.

Re: Erro compilação quando insiro mais prg

Enviado: 06 Dez 2025 22:23
por JoséQuintas
Veja se não está compilando hbp errrado, ou mais de um hbp.
Ou se o fonte está em outra pasta, tem que colocar o caminho.
Como teste, faça pela linha de comando.
hbmk2 fontenovo.prg gaspro.prg

Re: Erro compilação quando insiro mais prg

Enviado: 06 Dez 2025 23:14
por alxsts
Olá!

Estas funções que estão sendo apontadas como faltantes tem nomes típicos daquelas funções escritas em linguagem C embutidas no código Harbour, entre as diretivas #pragma begin dump ... #pragma End dump.

Na hora de chamar estas funções, o nome utilizado deve ser o que vem depois de HB_FUN_...

Exemplo:

Código: Selecionar todos

Procedure Main()

   EmailMDFE()

RETURN 

#pragma begin dump

HB_FUN_EMAILMDFE

   // Código em linguagem C

#pragma End dump

Re: Erro compilação quando insiro mais prg

Enviado: 06 Dez 2025 23:58
por JoséQuintas
Acho que não, porque toda função em harbour que falta, aparece como hb_fun.
Se fosse o que mencionou, daria falta de hb_fun_hb_fun.

Re: Erro compilação quando insiro mais prg

Enviado: 07 Dez 2025 00:19
por JoséQuintas
Teste prático

Código: Selecionar todos

PROCEDURE Main

   SetMode(33,100)
   CLS
   ? gzip( "test" )
   Inkey(0)

   RETURN

Código: Selecionar todos

D:/harbour/comp/mingw32/bin/../lib/gcc/i686-w64-mingw32/15.2.0/../../../../i686-w64-mingw32/bin/ld.exe: 
C:/Users/joseq/AppData/Local/Temp/hbmk_h4k9ma.dir/test.o:test.c:(.data+0x78):
undefined reference to `HB_FUN_GZIP'
HB_FUN_ é um prefixo comum a qualquer função do harbour.
Só resta mesmo o arquivo de funções estar ficando de fora, ou não estar sendo compilado direito.

Re: Erro compilação quando insiro mais prg

Enviado: 07 Dez 2025 00:39
por LDOSISTEMAS
O gasp40hb.prg está na mesma pasta dos outros fontes e apenas quando insiro um novo prg acontece isso se retiro o prg novo ele compila corretamente.
O que Quintas falou é o que parece estar acontecendo,,so nao entendi se e algo que fiz errado ou algum limite do compilador

Re: Erro compilação quando insiro mais prg

Enviado: 07 Dez 2025 04:51
por Jairo Maia
Olá Pessoal,

Comente ou remova (para teste) esses parâmetros:

-inc
-prgflag=/l


Se ainda o erro persistir, habilite no explorer (win+E) a visualização de arquivos e pastas ocultas, e na pasta do seu projeto remova a pasta .hbmk e faça o teste.

Re: Erro compilação quando insiro mais prg

Enviado: 07 Dez 2025 08:40
por JoséQuintas
E testes extras:

compile acrescentando na linha de comando -rebuild, isso força a recompilação.

Faça um teste compilando apenas o fonte do gas, pra ver se tem alguma mensagem que está deixando passar.
hbmk2 gas40hb.prg

Então....
Não existe limite
Aqui eventualmente uso hbmk2 *.prg
E acrescentar parâmetros conforme as mensagens indicarem que precisa mais coisa.
Depois, só colocar do mesmo jeito no hbp, única linha ou linhas separadas.

Isso lembra outro possível teste:
hbmk2 projeto.hbp gas40hb.prg
Teria que acusar duplicidade de tudo que existe dentro de gas40hb, porque ele entraria duas vezes

Isso lembra mais uma coisa:
Veja se no gas40hb.prg tem alguma declaração #pragma
isso permite adicionar parâmetros pra compilação só pra esse fonte, que podem estar atrapalhando.

Re: Erro compilação quando insiro mais prg

Enviado: 07 Dez 2025 10:40
por LDOSISTEMAS

Código: Selecionar todos

C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x17c8): undefined
reference to `HB_FUN_NFRENCIA'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x1808): undefined
reference to `HB_FUN_GER_GRA'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x1818): undefined
reference to `HB_FUN_GERNFREF'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x1828): undefined
reference to `HB_FUN_GER_LENT'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x1838): undefined
reference to `HB_FUN_GER_ITEN'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x1848): undefined
reference to `HB_FUN_GER_DUPL'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x1858): undefined
reference to `HB_FUN_GER_GRFE'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x1908): undefined
reference to `HB_FUN_LAPLANIL'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x1948): undefined
reference to `HB_FUN_PRCLIENT'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x1958): undefined
reference to `HB_FUN_SACCLIEN'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x1978): undefined
reference to `HB_FUN_TRIPORUF'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x19c8): undefined
reference to `HB_FUN_LIMPRODU'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/INDUSTRI.o:INDUSTRI.c:(.data+0x19d8): undefined
reference to `HB_FUN_ATUESTO1'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/PED_01F9.o:PED_01F9.c:(.data+0x318): undefined r
eference to `HB_FUN_AUTO_SENHA'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/OBSF9.o:OBSF9.c:(.data+0x78): undefined referenc
e to `HB_FUN_LEXML'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/MDF_03F9.o:MDF_03F9.c:(.data+0x1f8): undefined r
eference to `HB_FUN_LEXML'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/ATMDFEF9.o:ATMDFEF9.c:(.data+0x38): undefined re
ference to `HB_FUN_GETXMDF'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/VDFE01F9.o:VDFE01F9.c:(.data+0x98): undefined re
ference to `HB_FUN_EMAILMDFE'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/SAI_98F9.o:SAI_98F9.c:(.data+0x288): undefined r
eference to `HB_FUN_LEXML'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/SAI_03F9.o:SAI_03F9.c:(.data+0x328): undefined r
eference to `HB_FUN_AUTO_SENHA'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/SAI_97F9.o:SAI_97F9.c:(.data+0x168): undefined r
eference to `HB_FUN_LEXML'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/NFECF9.o:NFECF9.c:(.data+0x2a8): undefined refer
ence to `HB_FUN_GETXTNF'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/PTEN01F9.o:PTEN01F9.c:(.data+0x2d8): undefined r
eference to `HB_FUN_RATEIO'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/AUTNFEF9.o:AUTNFEF9.c:(.data+0x38): undefined re
ference to `HB_FUN_GETXTNF'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/VAIL01F9.o:VAIL01F9.c:(.data+0xa8): undefined re
ference to `HB_FUN_MANDAEMAIL'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/VCCE01F9.o:VCCE01F9.c:(.data+0x468): undefined r
eference to `HB_FUN_LEXML'
C:/WINDOWS/TEMP/hbmk_h4f9kz.dir/VIEN01F9.o:VIEN01F9.c:(.data+0x128): undefined r
eference to `HB_FUN_LEXML'
collect2.exe: error: ld returned 1 exit status
hbmk2[industri]: Erro: Executando linkeditor. 1
retirando o -inc e o prgflag mudou um pouco a mensagem parece que não esta compilando vários prg e não só o gas40hb
tirei quiet e agora mostrou dessa forma:

Código: Selecionar todos

k/win/mingw/GERAXML.o .hbmk/win/mingw/XMLMDFE.o .hbmk/win/mingw/SINTEGRA.o .hbm
/win/mingw/TRAARQUI.o .hbmk/win/mingw/BAPEDIDO.o .hbmk/win/mingw/REL_PROV.o .hb
k/win/mingw/_hbmkaut_GASP40HB.o    -mwindows -Wl,--start-group -lxhb -lhbwin -l
bct -lhbziparc -lhbmzip -lminizip -lhbnf -lhbhpdf -llibhpdf -lpng -lhbzebra -lh
extern -lhbdebug -lhbvmmt -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -l
twin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -
rddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainwin
-lwinmm -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -
comctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lmapi32 -limm32
lmsimg32 -lwininet -lhbpcre -lhbzlib   -Wl,--end-group -s -oindustri.exe  -LC:/
b32/lib/win/mingw

hbmk2: Erro: Referenciado, faltando, mas funções desconhecida(s): NFRENCIA(),
       GER_GRA(), GERNFREF(), GER_LENT(), GER_ITEN(), GER_DUPL(), GER_GRFE(),
       LAPLANIL(), PRCLIENT(), SACCLIEN(), TRIPORUF(), LIMPRODU(), ATUESTO1(),
       AUTO_SENHA(), LEXML(), GETXMDF(), EMAILMDFE(), GETXTNF(), RATEIO(),

Re: Erro compilação quando insiro mais prg

Enviado: 07 Dez 2025 10:52
por JoséQuintas
Difícil, mas não impossível.
Teste o hbp contra caracteres especiais.
Um Control-Z por exemplo, pode ser fim de arquivo, e pode não ficar visível, dependendo do editor de textos.

Em harbour, vai testando caracteres até não sobrar nada.

Código: Selecionar todos

PROCEDURE Main

   LOCAL cTxt, cLetra
   
   SetMode(33,100)
   CLS
   cTxt := MemoRead( "arquivo.hbp" )
    FOR EACH cLetra IN cTxt
       DO CASE
        CASE cLetra $ "abcdefghijklmnopqrstuvwxyz"
        CASE cLetra == Chr(10)
        CASE cLetra == Chr(13)
        CASE cLetra $ "0123456789"
        OTHERWSIE
           ? Asc( cLetra ), cLetra, Substr( cTxt, cLetra:__EnumIndex() - 10, 20 )
        ENDCASE
   NEXT
   Inkey(0)
   RETURN
Mas faz o teste de colocar a lib do gas duas vezes pra ver se aparece duplicado.

Re: Erro compilação quando insiro mais prg

Enviado: 07 Dez 2025 11:02
por LDOSISTEMAS
Fiz o teste de colocar duas vezes mas retornou o mesmo erro na compilaçao que não havia as funções

Re: Erro compilação quando insiro mais prg

Enviado: 07 Dez 2025 11:03
por JoséQuintas
Olhando melhor seu hbp também, partes que não são prg:

Código: Selecionar todos

-oindustri
-inc
####-prgflag=/l
-compr=yes
-quiet
-lxhb
####-lhbwin
####-lhbct
-gui
-mt
-strip
-lhbziparc ####hbc
-lhbmzip   ###hbc
-lminizip  ###hbc
-lhbnf     ###hbc
C:\sefazclass-master\source\*.prg ###include?
####libs=C:\hb32\contrib\hbhpdf\hbhpdf.hbc hbzebra.hbc hbwin.hbc hbct.hbc
libs=hbhpdf.hbc hbzebra.hbc hbwin.hbc hbct.hbc
Não tem a ver com os erros, ou talvez tenha...
Como compila fontes da sefazclass sem os includes da pasta include?