Página 1 de 1

Fatal C3007 Can't open #include file: 'key.ch

Enviado: 20 Abr 2010 17:13
por vromarques
Boa tarde amigos!

Sou programador COBOL, mas ja fiz um cursinho de Clipper tempos atráz.
Estou tentando ajudar um cliente, que tem um programa de representante em Clipper 5.3b, pois deu pau quando entrou no ano de 2010.
Ja identifiquei o problema e ja fis a correção que era e questão de trabalhar com 4 digitos no ano. O programador dele nao da mais suporte a ele ou seja descontinou totalmente o programa e entregou os fontes ao cliente. Mas alguns arquivos ela nao enviou como por exemplo o arquivo citado acima: Key.ch. O cliente ligou para ele, mas ele diz que nao tem mais nada referente a estes arquivos.
Pelo que pude notar que este arquivo e uma função, tipo Inkey.ch, mas até agora achei solução para poder recompilar sem o devido arquivo.
Isolei o Key.ch e compilei o retorno foi o seguinte:

C:\CLIP53\BIN>clipper nota
348K available
Compiling NOTA.PRG
Code size 33185, Symbols 5536, Constants 12767

C:\CLIP53\BIN>if not errorlevel 1 exospace file nota
Reading object files and library headers.
Processing library directories.
Extracting library objects.
Unresolved externals...
"ABRIU" in module (NOTA)
"APB" in module (NOTA)
"BIP" in module (NOTA)
"BUF" in module (NOTA)
"CENTRO" in module (NOTA)
"CLIOBS" in module (NOTA)
"CONFIRMA" in module (NOTA)
"DECRIP" in module (NOTA)
"DIREITA" in module (NOTA)
"EDITA" in module (NOTA)
"GETID" in module (NOTA)
"INPUT2" in module (NOTA)
"JANELA" in module (NOTA)
"MENSA2" in module (NOTA)
"MOUSE" in module (NOTA)
"MOUSEAREA" in module (NOTA)
"OP" in module (NOTA)
"PROG_DADOS" in module (NOTA)
"PROG_TELA" in module (NOTA)
"READBUTTON" in module (NOTA)
"READINI" in module (NOTA)
"READMEMO" in module (NOTA)
"SENDESC" in module (NOTA)
"TRAVOU" in module (NOTA)
"TRAVOUF" in module (NOTA)
"UPD" in module (NOTA)
"WAITING" in module (NOTA)
"WRITEINI" in module (NOTA)
ERROR(#4045): Total: 28 unresolved symbols.

ERROR(#4056): Abort error level exceeded.

Agradeço muito se puderem me ajudar.

Sds.

Vanderlei R. Marques



---
Nota da Moderação (Maligno):
O presente tópico foi movido da seção "Contribuições, Dicas e Tutoriais", uma vez que seu conteúdo está em divergência com os objetivos daquela seção, onde só podem constar OFERTAS de dicas e truques e discussões sobre o material apresentado.

Re: Fatal C3007 Can't open #include file: 'key.ch

Enviado: 20 Abr 2010 17:27
por Maligno
Olá.
Seja bem-vindo ao fórum. :)


Acho que é possível que você não tenha o compilador completo. A versão 5.3 não é a que eu usava. Mas é possível que o tal arquivo "KEY.CH" seja, na verdade, "INKEY.CH". Pela extensão vê-se que é um arquivo de cabeçalho, que deve conter algumas macros relacionadas a teclado. Você pode baixar o compilador do meu site clicando aqui.

Mas a lista de "unresolved external" diz respeito a símbolos que só podem pertencer ao programa. Não são do compilador.

Re: Fatal C3007 Can't open #include file: 'key.ch

Enviado: 20 Abr 2010 17:45
por vromarques
Maligno, muito obrigado por seu retorno.

Quanto ao arquivo inkey.ch, tenho ele junto a biblioteca do clipper instalado, até ja mudei o nome no fonte NOTA, de key.ch para inkey.ch, mas observo que na compilação isolando o arquivo key.ch, varios nomes de Unresolved externals, estão citados em português como se o programador criou funções ou renomeou, como por exemplo:
"ABRIU" in module (NOTA)
"TRAVOU" in module (NOTA)
"CONFIRMA" in module (NOTA).

Vanderlei R Marques

Re: Fatal C3007 Can't open #include file: 'key.ch

Enviado: 20 Abr 2010 17:55
por vromarques
Maligno,
Estou enviando em anexo o programa NOTA, se puder analisar o programa lhe agradeço.


Sds.

Vanderlei R. Marques
nota.prg
Unresolved externals...
Unresolved externals...
Unresolved externals...
Unresolved externals... "ABRIU" in module (NOTA) etc...
(71.23 KiB) Baixado 189 vezes

Re: Fatal C3007 Can't open #include file: 'key.ch

Enviado: 20 Abr 2010 17:56
por Maligno
Essas funções certamente são parte do trabalho do programador que fez o sistema. Não são do sistema. Esses "unresolved external" são erros de tempo de ligação. O linker não encontrou esses símbolos após o processo de busca por OBJs, LIBs, etc. Você deve ter aí um BATch de compilação ou algo do tipo. Deve estar faltando compilar esses fontes.Ou eles estão em outro diretório, que o linker não consegue alcançar.

Re: Fatal C3007 Can't open #include file: 'key.ch

Enviado: 20 Abr 2010 18:03
por Maligno
Olhei o arquivo. Mas ele não é único. Deve ter mais arquivos fontes vinculados a este programa. Um exemplo é o símbolo "ABRIU", que é nome de uma função que não consta nesse fonte. Logicamente, ela está declarada em outro arquivo PRG. Você deve tê-los aí. Não tem um arquivo BATch qualquer?



PS: É um programa de emissão de NF? Se for, me parece que não tem controle de estoque. Se não tiver mesmo, fique atento. A Receita Estadual não permite o uso de software apenas para emissão de NF. Obrigatoriamente você deve ter um controle de estoque completo, com o recurso de exportação para o SINTEGRA. Sem isso, corre-se o risco de autuação e cassação de AIDF.

Re: Fatal C3007 Can't open #include file: 'key.ch

Enviado: 20 Abr 2010 18:38
por vromarques
Maligno,

o sistema e um controle gerencial, ele nao emite nota e apenas um controle de pedidos, pois este cliente e um representante.
Realmente tem o programa principal : neo.prg, e outros estou lhe enviando todos, esperando nao abusar se sua boa vontade.

Observando o que voce me disse, sobre as funçoes estar em outro programa, pude observar que no programa BOOK.PRG, estão definidas, mas nao entendi como fazer esta ligação e o que tem a haver com o arquivo key.ch. É possivel deste program book.prg, ele ter gerado um key.ch? Pois quando tiro a linha #include key.ch, que as fuções nao encontradas aparecem na compilação!!??.

Vanderlei R, Marques.
neo.prg
Programa principal
(29.99 KiB) Baixado 139 vezes
cadastro.prg
cadastro
(23.09 KiB) Baixado 137 vezes
book.zip
Neste programa me parece que estao as funcoes
(28.41 KiB) Baixado 199 vezes

Re: Fatal C3007 Can't open #include file: 'key.ch

Enviado: 20 Abr 2010 19:12
por Maligno
Se forem apenas esses três, é fácil:

Código: Selecionar todos

clipper neo
clipper cadastro
clipper book
rtlink file neo,cadastro,book
De forma bem resumida os comandos de linha são esses. Como eu disse, não é essa a versão que eu utilizava, mas partindo da que conheço e observando o fonte principal, acho que só isso já pode até resolver o problema e gerar o EXE. A não ser, claro, que haja dependência de alguma biblioteca externa. Isso você vai descobrir em link-time.

Re: Fatal C3007 Can't open #include file: 'key.ch

Enviado: 22 Abr 2010 09:51
por vromarques
Bom dia caro amigo Maligno!

Fiz um bat de acordo com sua instrução, trocando apenas o RTLINK por EXOSPACE, pois observei que nesta versao me parece que para linkar é utilizado o EXOSPACE, baseando na versao do clipper que o programador gerou o .EXE atual, o resultado foi o seguinte,:

ExoSpace for CA-Clipper 5.3
Copyright (c) 1993 - 1995 Computer Associates International, Inc.

DOS/16M Copyright (c) Tenberry Software, Inc. 1987 - 1995

EXO1 - General Linking Utility (for CA-Clipper ExoSpace). V2.11
Copyright (c) Tenberry Software, Inc. 1987 - 1994

Reading object files and library headers.
ERROR(#4029): File(BOOK) Multiple definition of "BOOK" from
file "NEO".
ERROR(#4056): Abort error level exceeded.


EXOSPACE error : link failed - .EXE not created (2)

Parece que há uma multi definição de "BOOK" tentei analisar, mas nao vi esta dupla definicao.

Vanderlei R. Marques.

Re: Fatal C3007 Can't open #include file: 'key.ch

Enviado: 23 Abr 2010 08:08
por rochinha
Amiguinho,

modifique seu .BAT para o seguinte:

Código: Selecionar todos

clipper neo /m
clipper cadastro /m
clipper book /m
rtlink file neo,cadastro,book
Acrescente p /M para compilar cada módulo em separado, senão acontece o erro de duplicação de código.

Fatal C3007 Can't open #include file: 'key.ch

Enviado: 23 Abr 2010 13:15
por Pablo César
Pelo que ja ví dos arquivos que me foram enviados, a compilação era feita pelo ExoSpace, o que ja deu certo a compilação. No entanto se pudermos passar para Blinker, seria melhor.

Você Vanderlei está pedindo-me para incluir mais um arquivo prg que antes não constava, mas se você reparar esse arquivo tem funções que estão sendo repetidas em Nota.prg e Neo.prg. Temos que ter certeza o que está ocorrendo, se você relatasse com detalhes, baseado no ultimo executável que foi recreado, pode recompor e até corrigir os bugs do milénio e outros também. Mas se ficarmos dando tiro no escuro, vamos ficar muito tempo. Estou no chat aguardanmdo por você para esclarecer melhor a situação.

Com respeito ao #include file: 'key.ch, por enquanto tirei fora, por não ter esse arquivo disponível e até adaptei para que aceitasse o inkey.ch que o Clipper tem como default.