Página 1 de 2
Nao consigo compilar mais meu programa (muitos aquivos)
Enviado: 28 Set 2007 14:51
por ademilson
Bom tarde Senhores...
Estou com um probleminha aqui, nao estou conseguindo compilar meu programa principal, ele dah um erro na linkagem, tipo blx, chega a criar o executavel, mas, com 0 byte, pois bem, utilizo o blinker 7, tenho um rmk e consequentemente um lnk, ai para eu conseguir compilar, tenho que tirar algum modulo do lnk, ai chamo esse programa que tirei externamente...
No harbour nao tenho esse problema, porem, ainda tenho muitos cliente que utilizam a versao dos.
Alguem sabe se existe algum comando para ser colocado no lnk ou no rmk para resolver este problema.??
Abracos,
Jose Ademilson da Cruz
SG Sistemas de Automacao ltda.
Enviado: 28 Set 2007 14:59
por Maligno
Não esqueceu nada? Se a raiz do problema está na montagem do programa, você precisa postar seus scripts, de compilação de linkedição. Senão ficará difícil dizer o que pode estar acontecendo.
Enviado: 28 Set 2007 15:36
por ademilson
Opa, com certeza... desculpe... la vai entaum....
segue o RMK...
.prg.obj:
$(A_CLIP_PATH)CLIPPER $< /n /dTUDO /q >> \new\cmenu.log
menu.obj : \new\menu.prg
menuc.obj : \new\menuc.prg \new\cep005e.prg \new\cep006e.prg \new\cep060e.prg\
\new\cep030e.prg \new\cep031e.prg \new\cep010e.prg \new\cps054.prg\
\new\cep053.prg \new\cep052.prg \new\rcp010.prg \new\rcp030.prg
pdv000.obj : \new\pdv000.prg \new\pdv001.prg \new\pdv002.prg \new\pdv011.prg\
\new\pdv013.prg \new\pdv014.prg \new\pdv017.prg\
\new\pdv018.prg \new\pdv019.prg \new\pdv020.prg
outros modulos....
pdv000x.obj: \new\pdv000x.prg \new\pdv054.prg \new\pdv055.prg \new\pdv056.prg\
\new\pdv057.prg \new\pdv058.prg \new\pdv061.prg \new\pdv062.prg\
\new\pdv070.prg \new\pdv075.prg \new\pdv076.prg \new\pdv086.prg\
\new\pdv084.prg \new\pdv095.prg \new\pdv074.prg \new\pdv035.prg\
\new\pdv065.prg \new\pdv063.prg \new\pdv064.prg \new\pdv053.prg\
\new\pdv071.prg \new\pdv067.prg \new\pdv012.prg \new\pdv069.prg\
\new\pdv005.prg \new\pdv068.prg \new\pdv034.prg \new\pdv046.prg\
\new\pdv042.prg \new\pdv043.prg \new\pdv059.prg \new\pdv052.prg\
\new\pdv051.prg \new\pdv050.prg \new\pdv030.prg \new\pdv077.prg
outros modulos....
.obj.exe:
menu : menu.obj
menuc : menuc.obj
pdv000 : pdv000.obj
pdv000x : pdv000x.obj
$(A_BLIN_PATH)blinker @\new\cmenu.lnk
************************************************
Segue o LNK....
blinker clipper symbol off
blinker executable alignment 256
blinker executable extended
blinker incremental off
blinker overlay pageframe on
file \new\obj53\menu.obj
file \new\obj53\menuc.obj
file \new\obj53\pdv000.obj
file \new\obj53\pdv000x.obj
outros modulos.....
file p:\comp\clipper5\obj\cdxlock.obj
library p:\comp\blinker7\lib\blxclp53.lib
library p:\comp\clipper5\lib\_dbfcdx
library p:\comp\clipper5\lib\dbfcdx
library \new\sgs.lib
output f:\exes\menu.exe
Abracos,
Enviado: 28 Set 2007 19:02
por Maligno
Com relação à parte da compilação, vejo que você está complicando o que é simples. Veja um pedaço de como poderia ficar mais simples:
Código: Selecionar todos
\dir\seu_exe: objeto1.obj \
objeto2.obj \
objeto3.obj \
objeto4.obj \
objeto5.obj
cls
blinker @prg.lnk
.prg.obj:
cls
$(A_CLIP_PATH)CLIPPER $< /n /dTUDO /q >> \new\cmenu.log
Veja que a lista de objetos pode ser mais facilmente manipulada se estiver em ordem alfabética. Como a escala de dependência se dá em relação ao EXE e depois ao objeto, qualquer modificação em qualquer fonte já forçará a recompilação do fonte alterado. Fica bem mais simples. De qualquer forma, não vi nada de errado no seu script. Você pode manter do jeito que está, se preferir. Só estou dando uma dica para simplificação. Muito embora, você pudesse suprimir as informações de nomes de diretórios apenas compilando no próprio diretório dos fontes. Fica a sugestão.
Com relação à linkedição, mesma coisa: parece estar tudo certo, a não ser pelos três comandos:
Código: Selecionar todos
blinker clipper symbol off
blinker executable alignment 256
blinker overlay pageframe on
Como seu programa está sendo gerado para o modo protegido, você não terá qualquer efeito com qualquer coisa relacionada a overlay. O BLinker simplesmente ignora isso. Veja o help.
Mas as duas primeiras linhas são necessárias? Tente comentá-las pra ver como o processo transcorre.
Na parte das LIBs só ficou a dúvida com relação à essa SGS.LIB. Ela é sua? Sendo ou não, ela precisa estar preparada para o modo protegido. Senão, é pau na certa.
Enviado: 29 Set 2007 08:52
por ademilson
Bom Dia...
Maligno, a SGS.LIB é minha mesmo, mas, nao entendi direito, para gera-la eu somente a compilo... nao linko ela com nada, entende?
Eh estava dando uma olhada aki na documentacao, realmente a linha do pageframe nao precisa mesmo, pois, o ON ja o default... a Questao do ALIGNMENT é necessario pois meu executavel ultrapassa 10 megas... Agora a primeira linha estou pesquisando ainda sobre sua necessidade ou nao... Ja comentei a primeira linha e tentei compilar, mas, negativo, sem sucesso...
abracos,
Jose Ademilson da Cruz
Gerente de programacao
Enviado: 29 Set 2007 11:03
por Maligno
Maligno, a SGS.LIB é minha mesmo, mas, nao entendi direito, para gera-la eu somente a compilo... nao linko ela com nada, entende?
Nem poderia. Senão, não seria uma LIB.
O tal erro BLX tem qual código?
Enviado: 29 Set 2007 11:14
por ademilson
ela precisa estar preparada para o modo protegido. Senão, é pau na certa.
Nem poderia. Senão, não seria uma LIB.
Pois é, mas, entao que tipo de analise tenho que fazer para dizer se ela esta preparada ou nao??
Segue o Erro...
BLX286 : 1302 : DPMI function call 0000h failed with error code 0000h
AX=0000 BX=0350 CX=0001 DX=0350
Dai ele chega a criar o executal, porem esta com 0 bytes
Abs,
Enviado: 29 Set 2007 11:23
por Maligno
Segue o Erro...
BLX286 : 1302 : DPMI function call 0000h failed with error code 0000h
AX=0000 BX=0350 CX=0001 DX=0350
Dai ele chega a criar o executal, porem esta com 0 bytes
Mas se o seu programa está retornando esse erro, certamente ele não pode ter tamanho 0. Senão nem executaria. O erro parece ser uma GPF, mas GPF costuma gerar um texto grande, que enche a tela toda. Ou você cortou uma parte?
Agora, se for GPF mesmo, está relacionado ao modo protegido. Significa que alguma coisa no seu programa não está preparada para trabalhar nesse modo. Então, isso me leva a crer que há mais alguma outra biblioteca que você se esqueceu de mencionar ou sua LIB SGS pode conter alguma função em baixo nível (C ou ASM) não preparada para o modo protegido.
Enviado: 01 Out 2007 08:20
por ademilson
Mas se o seu programa está retornando esse erro, certamente ele não pode ter tamanho 0. Senão nem executaria.
Ele nao executa mesmo... o arquivo é somente criado com 0 bytes, esse erro que vc mencionou de aparecer escrito na tela toda ja aconteceu comigo, mas ai o programa estava rodando, neste caso era problema de indice...
abs,
Enviado: 01 Out 2007 09:52
por Maligno
Mas quando você compila aparece algum erro? Se sim, qual?
Enviado: 01 Out 2007 11:06
por ademilson
Na compilacao nao, esse erro da quando esta linkando...
Enviado: 01 Out 2007 11:07
por Maligno
Sim, mas qual erro, exatamente?
Enviado: 01 Out 2007 11:17
por ademilson
Exatamente este, do blx.... posso tirar um print da tela se for o caso...
Enviado: 01 Out 2007 11:30
por Maligno
posso tirar um print da tela se for o caso...
Por favor.
Enviado: 01 Out 2007 11:52
por ademilson
Maligno, mandei neste e-mail aki que vi na sua pagina, OK...
pbuzinello@ibestvip.com.br
abs,