Libs, Legal, Mas como Fazer?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Renan
Usuário Nível 2
Usuário Nível 2
Mensagens: 73
Registrado em: 19 Jul 2007 20:01
Localização: Itu - sp (Interiorzao)

Libs, Legal, Mas como Fazer?

Mensagem por Renan »

Ai pessoal Podem me ajudar a criar libs, naum sei nda para criar libs quais programas, codigos, comandos ? heheh soh sei usar hehe!

_-|Renan|-_.
Se te derem um limao faca uma limonda horas,
##Perguntas que fazem o mundo pensar#######
EM QUANTOS SEGUNDOS UMA MAQUINA ENROLA 1
ROLO DE PAPEL HIGIENICO?
###############################
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Bibliotecas são conjuntos de módulos objetos. Cada PRG criado será um módulo, onde poderão constar diversos símbolos, o que inclui funções e variáveis públicas.
Para criar bibliotecas, portanto, você precisará gerar seus objetos pela compilação dos fontes. Feito isso, bastará usar um simples utilitário que criará o arquivo de extensão LIB. Acho que o melhor, ou pelo menos o mais simples e eficiente, na minha opinião, é o TLib da Borland. Exemplo de uso:

Código: Selecionar todos

tlib myLib  +tst1,tst2,tst3 // acrescenta os OBJs à myLib
tlib myLib  -tst1,tst2,tst3 // exclui os OBJs
tlib myLib +-tst1,tst2,tst3 // substitui os OBJs
Cada movimento (inclusão, exclusão, etc) deve ser executado separadamente. Eu sei que o Clipper não usa esse utilitário. Mas eu nunca usei o LIB que acompanha o Clipper. Entretanto, o princípio é exatamente o mesmo. Basta executar o LIB do Clipper sem qualquer parâmetro e ver sua lista de opções. E leia também o NG, que contém outras informações.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Renan
Usuário Nível 2
Usuário Nível 2
Mensagens: 73
Registrado em: 19 Jul 2007 20:01
Localização: Itu - sp (Interiorzao)

Mensagem por Renan »

Ah e Onde eu posso achar esse utilitario?
Se te derem um limao faca uma limonda horas,
##Perguntas que fazem o mundo pensar#######
EM QUANTOS SEGUNDOS UMA MAQUINA ENROLA 1
ROLO DE PAPEL HIGIENICO?
###############################
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Um adendo: caso queira usar o TLIB da Borland (versão 4.5, que acompanha o BCC) ao invés do LIB que acompanha o Clipper, é só pegar do meu site, na área "pub". Diretório "tools".
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Renan
Usuário Nível 2
Usuário Nível 2
Mensagens: 73
Registrado em: 19 Jul 2007 20:01
Localização: Itu - sp (Interiorzao)

Mensagem por Renan »

Mas tipo assim que as funcoes que estao na lib, para chama las eh normal soh por Main() ele ja olha na lib?
Se te derem um limao faca uma limonda horas,
##Perguntas que fazem o mundo pensar#######
EM QUANTOS SEGUNDOS UMA MAQUINA ENROLA 1
ROLO DE PAPEL HIGIENICO?
###############################
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Quando você executa uma função no seu programa, o compilador cria naquele lugar uma referência a esta função, como um símbolo pendente de ligação. O trabalho de ligação é feito pelo linker. Daí vem o nome. Ao usar seu linker preferido, seja ele o RTlink, que acompanha o Clipper, ou o BLinker, sua biblioteca deverá ser declarada para que ele possa pesquisar pelo símbolo pendente. Uma vez que ele encontre um nome de símbolo igual, o código a ele vinculado é ligado ao seu programa estaticamente. Ou seja, ele é incorporado ao seu EXE.
Suponhamos que seu programa tenha a chamada de uma função feita por você e incluída naquela biblioteca exemplo. Você precisa dizer ao linker onde procurar por aquele símbolo.

Código: Selecionar todos

rtlink fi teste li myLib
Apenas observe um detalhe: uma função é um símbolo que reside dentro de um módulo. Seu PRG compilado com uma ou mais funções é este módulo. É ele que será incluído na biblioteca. Portanto, se você tem um módulo com 500 funções (ou símbolos) mas usa apenas uma função, todas as outras 499 funções (ou símbolos) serão incorporados ao seu executável. Aí se vê que é necessário ter um certo cuidado na composição dos módulos (ou PRGs), a fim de evitar que seu executável se transforme num monstro. :)))
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Renan escreveu:Mas tipo assim que as funcoes que estao na lib, para chama las eh normal soh por Main() ele ja olha na lib?
Vc tem que linkar no seu script ...vc esta usando rtlink ou blinker ou.... ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Renan
Usuário Nível 2
Usuário Nível 2
Mensagens: 73
Registrado em: 19 Jul 2007 20:01
Localização: Itu - sp (Interiorzao)

Mensagem por Renan »

blinker, num sei pq no meu pc o rtlink da um erro dai axei o blinker eu nunca mas mexi no rtlink
Se te derem um limao faca uma limonda horas,
##Perguntas que fazem o mundo pensar#######
EM QUANTOS SEGUNDOS UMA MAQUINA ENROLA 1
ROLO DE PAPEL HIGIENICO?
###############################
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

O BLinker, acredito eu, é unanimidade entre os programadores Clipper. Além do que, o RTlink que acompanha o Clipper só cria programas no modo real. E o modo protegido traz mais vantagens. Daí a turma prefere o BLinker mesmo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Renan escreveu:blinker, num sei pq no meu pc o rtlink da um erro dai axei o blinker eu nunca mas mexi no rtlink
O Blinker é melhor mesmo.Já sabe linkar sua lib no seu sistema ? ...se ficou com duvida posta seu .LNK que podemos montar facilmente pra vc...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Renan
Usuário Nível 2
Usuário Nível 2
Mensagens: 73
Registrado em: 19 Jul 2007 20:01
Localização: Itu - sp (Interiorzao)

Mensagem por Renan »

nao ja sei qeu vc tem que ser assim blinker fi teste lib renaslib,vl2_52,fast,gsutil03 e la vai cacetada,naum era essa a minha duvida, tipo assim geralmente eu ponho no programa assim Main()//chama main
no fim do programa ponho la
function main ()
alert("OI,LIBS")
return nil
c eu por a essa funcao na obj trans pra lib e linka junto eu posso tira a function main do programa principal
Se te derem um limao faca uma limonda horas,
##Perguntas que fazem o mundo pensar#######
EM QUANTOS SEGUNDOS UMA MAQUINA ENROLA 1
ROLO DE PAPEL HIGIENICO?
###############################
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Uma pergunta, pra complicar: se, no Clipper, todas as funções são "incluídas" no EXE e você não precisa distribuir a LIB com o seu sistema, então qual a vantagem de se criar LIBs? O tempo da compilação?
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Renan escreveu:nao ja sei qeu vc tem que ser assim blinker fi teste lib renaslib,vl2_52,fast,gsutil03 e la vai cacetada,naum era essa a minha duvida, tipo assim geralmente eu ponho no programa assim Main()//chama main
no fim do programa ponho la
function main ()
alert("OI,LIBS")
return nil
c eu por a essa funcao na obj trans pra lib e linka junto eu posso tira a function main do programa principal
Não entendi muito bem, mas seria algo assim hoooo....sua function main() ficaria na LIB e vc linka essa lib como no seu exemplo...e pode chamar ela de qualquer aprte do seu sistema.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

A principal vantagem, Eolo, é o reaproveitamente e distribuição de código. Se não fossem as LIBs, a CATools, por exemplo, seria uma coleção imensa de objetos.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Eolo escreveu:Uma pergunta, pra complicar: se, no Clipper, todas as funções são "incluídas" no EXE e você não precisa distribuir a LIB com o seu sistema, então qual a vantagem de se criar LIBs? O tempo da compilação?
Eu tenho em Minha Lib varias funções que uso em varios sistemas....vamos dizer que seria um jeito facil de carregar todas essas minhas funções de um sistema para o outro. e seu tiver alguma alteração...ou inclusão soh subistituo a LIB e não altero cada PRG.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder