Erro na compilaçäo Unresolved External

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

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Erro na compilaçäo Unresolved External

Mensagem por porter »

bom dia,
Estou compilando um pequeno programa como teste, tenhos dois arqs PRG assim:
arquivos HELLOBR.PRG e FUNCOES.PRG

HELLOBR.PRG

Código: Selecionar todos

FUNCTION MAIN 
CLEAR 
@1,1 SAY "LINHA 1" 
@2,1 SAY "LINHA 2" 
@3,1 SAY "LINHA 3" 
MOSTRA() 
RETURN 

FUNCOES.PRG

Código: Selecionar todos

FUNCTION FUNCOES 
PROCEDURE MOSTRA 
@ 10,01 SAY "TESTANDO FUNCAO" 
RETURN .T. 
Quando compilo, esta dando o seguinte erro:
Unresolved External '_HB_FUN_MOSTRA' referenced C:\HELLO\HELLOBR.OBJ'

Esta dizendo que essa funcao MOSTRA() nao existe, mas ela foi criada em FUNCOES.PRG.
Fiz um teste, se a funcao estiver dentro do PRG que sera chamado, da certo, senao na compilacao da esse erro, gostaria de deixar todas as funcoes no meu caso em FUNCOES.PRG, e dos outros PRG executar essas funcoes que estao dentro de FUNCOES.PRG.
Editado pela última vez por anacatacombs em 19 Jul 2011 09:19, em um total de 2 vezes.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Erro na compilaçäo Unresolved External

Mensagem por Jairo Maia »

Olá Pórter,

Copie seus exemplos: HELLOBR.PRG e FUNCOES.PRG. Compilei e deu certo. Sequer tirei a linha desnecessária FUNCTION FUNCOES, que vc colocou acima da linha FUNCTION MOSTRA.

Acredito que vc não esteja linkando o arquivo FUNCOES.PRG. Vc editou o script hellobr.exe.xbp e acrescentou este arquivo nele? Vc pode também rodar novamente o XBUILD, seguir os passos que vc já conhece, e acrescentar este arquivo, pq aqui deu tudo certo.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Erro na compilaçäo Unresolved External

Mensagem por porter »

Acredito que vc não esteja linkando o arquivo FUNCOES.PRG. Vc editou o script hellobr.exe.xbp e acrescentou este arquivo nele? Vc pode também rodar novamente o XBUILD, seguir os passos que vc já conhece, e acrescentar este arquivo, pq aqui deu tudo certo.
Ola,
Estou fazendo da seguinte forma, criei eu arq bat assim:

c:\xharbour\bin\xbuild hellobr.exe.xbp

dentro do arquivo hellobr.exe.xbp, abaixo de TARGETFOLDER, coloquei

[C:\HELLO\*.PRG]

No arquivo FUNCOES.PRG, nao é assim que faz ?

Código: Selecionar todos

FUNCTION FUNCOES
PROCEDURE MOSTRA
@ 20,10 SAY "TESTE"
RETURN .T.
Valeu amigo, obrigado.
Editado pela última vez por anacatacombs em 19 Jul 2011 13:25, em um total de 2 vezes.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Erro na compilaçäo Unresolved External

Mensagem por Jairo Maia »

Olá Ana,
Obrigado por sua intervenção. Mas acho que está havendo confusão aqui, e só agora percebi. Eu havia feito o teste com base no que o autor tinha postado no tópico: "Dúvida. Aprendendo a compilar". Quando voltei ele havia criado este, e acabei errando ao dar continuidade aqui.

Olá Pórter,

Entendi. Fiz exatamente como vc está fazendo. Não deu nenhum erro, mas não consigo ver o resultado da função Main(), apenas o resultado da função MOSTRA(), mesmo colocando em Main() o comando SetMode( 25, 80 ).

Porém, acresecentando no script o arquivo FUNCOES.PRG, tudo corre normal. Não sei dizer o que está ocorrendo. Vamos aguardar algum colega mais experiente dar alguma dica.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
anacatacombs
Membro Master
Membro Master
Mensagens: 472
Registrado em: 12 Jul 2005 16:53
Localização: Cianorte-Paraná
Contato:

Erro na compilaçäo Unresolved External

Mensagem por anacatacombs »

No Arquivo funcoes.prg vc precisa apenas

Código: Selecionar todos

PROCEDURE MOSTRA()
@ 20,10 SAY "TESTE"
Não precisa declarar FUNCTION FUNCOES no inicio do prg.

Tente fazer essa alteração e por favor, poste o resultado.
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Erro na compilaçäo Unresolved External

Mensagem por porter »

Entendi. Fiz exatamente como vc está fazendo. Não deu nenhum erro, mas não consigo ver o resultado da função Main(), apenas o resultado da função MOSTRA(), mesmo colocando em Main() o comando SetMode( 25, 80 ).

Ola Jairo Maia,
Agora estou conseguindo compilar sem erro, mas esta acontecendo isso que vc disse, nao vendo o resultado da funcao Main(), apenas o resultado da funcao MOSTRA().
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Erro na compilaçäo Unresolved External

Mensagem por porter »

ola pessoal,

no arquivo HELLOBR.EXE.XBP, abaixo de TARGETFOLDER, ao inves de deixar C:\HELLO\*.PRG, fiz assim

[HELLOBR.PRG]
MYC_FLAGS =
MYDEFINES =
MYPRG_FLAGS =

[FUNCOES.PRG]
MYC_FLAGS =
MYDEFINES =
MYPRG_FLAGS =

Ai deu certo, nao sei se essa é a maneira correta, sera que tem que informar todos os PRGs ?
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Erro na compilaçäo Unresolved External

Mensagem por Jairo Maia »

Olá Pórter,
porter escreveu:Ai deu certo
Acima eu já havia dito isso. Talvez para usar a sugestão do colega Leonardo, precisa mais alguma coisa. Dá a impressão que a função Main() não é executada, não sei.
porter escreveu:sera que tem que informar todos os PRGs ?
Sim! Nescessariamente Todos.

O que vc pode fazer é simplicficar o script assim:

Código: Selecionar todos

[HELLOBR.PRG]
[FUNCOES.PRG]
[etc...]
Se futuramente vc precisar usar alguma definição específica para algum arquivo, basta fazê-lo abaixo do arquivo pretendido.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Erro na compilaçäo Unresolved External

Mensagem por porter »

Olá Jairo,
Desta forma que vc passou deu certo:

[HELLOBR.PRG]
[FUNCOES.PRG]

obrigado.
Responder