miracle escreveu:Eu pensei que o clipper localizasse as libs nls diretórios especificados no autoexec.bat. Mas, se não é assim, como devo fazer?
Os pingos nos is... Nada a ver com autoexec. Falemos de variáveis de ambiente, que tanto podem vir pelo autoexec quanto podem ser digitadas por você mesmo a qualquer momento.
O Clipper não localiza coisa alguma. Ele apenas compila e transforma seus comandos em op-codes (códigos internos).
No que diz respeito às variáveis de ambiente, o Clipper só precisa de uma: SET INCLUDE, que lhe diz onde procurar pelos headers que ele possa vir a precisar.
No decorrer do processo de compilação o Clipper encontra alguns símbolos. Ele não tá nem aí pra eles. A função dele é apenas identificar e incluir estes símbolos numa tabela dentro de cada objeto que ele gerar. O trabalho do Clipper morre aí.
Gerado o objeto (sem erros), entra em ação o linker, que vai pegar aquela tabela de símbolos pendentes e procurar por eles nas bibliotecas e/ou objetos aos quais ele tiver acesso, através da informação que você lhe passar pela linha de comando (cláusulas FILE e LIB). A intenção é ligá-los ao seu novo executável. Isso é o que chamamos de ligação estática. Ou seja, o código objeto que representa aquele símbolo será "incorporado" ao seu executável. Claro que pra isso o linker tem que saber onde procurar. Aí entram as variáveis de ambiente de novo. Principalmente SET LIB e SET OBJ. O restão nem importa tanto.
Detalhe: pra todas as linguagens, o processo de montagem de um EXE é semelhante a esse. A única diferença mais notável é quando há ligação dinâmica (DLL). Mas isso é outro assunto.
CLS
CLIPPER %1
IF NOT ERRORLEVEL 1 EXOSPACE FILE %1 LIB FGLIB30, CLIPPER, EXTEND
DEL %1.obj
As LIBs CLIPPER e EXTEND são default. Ou seja, ao montar seu objeto, o Clipper já informa o linker que essas LIBs deverão ser pesquisadas. Não é necessário informá-las. No presente caso, só noto a falta da SIX3.LIB.
É que eu não tenho o arquivo NG do Exospace.
Nem eu. Mas ele não será necessário. Se quiser montar seu EXE no modo protegido, use o BLinker, que é bem melhor. Mas por enquanto, fique apenas com o RTLink, que é o mais simples.