• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

n_digo

how to make ... Livrarias

15 mensagens neste tópico

boas ninguem consegue me arranjar um toturial como fazer livrarias e saber chamar as funções dentro desta ???

é que no google é muito codigo que nao percebo.... :X

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tem nada demais...

No ficheiro principal, ou ficheiros principais ".c", fazes um:

#include "biblioteca.h"

Depois podes chamar pelas funções normalmente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assinatura retirada por Medida Cautelar... Cheesy LOOOOOOOOOOOOLLL

nao quer dizer talvez expliquei mal ... nao é como chamar mas sim como fazer !!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a unica diferença é que tenho em vez de gravar em .c gravo em .h ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a unica diferença é que tenho em vez de gravar em .c gravo em .h ?

Normalmente as bibliotecas, ou seja, ao que tu chamas livrarias são ficheiros .h

Mas também podes gravar em .c, nada to impede.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso agora depende.

Existem 3 formar de trabalhar:

1. Bibliotecas estáticas de código.

    Isto é quando tens o código fonte em .c e os protótipos das funções no .h

2. Bibliotecas dinâmicas de desenvolvimento.

    Isto é quando tens o código compilado em .dll, configurações e associações estáticas usadas com o compilador .lib e o .h normal

3. Biblioteca dinâmica.

    Quando apenas tens a .dll,  isto é no teu código terás de recorrer a funções do SO para que te encontre as referências das funções dentro da dll.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entao explicame como se faz o primeiro 3º. Que gostava de saber ja agora....

Cumps...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

uma biblioteca é normalmente composta por duas partes: a assinatura/headers das funções que queremos disponibilizar (que fica num ou vários ficheiros .h); e a implementação das função (que fica num ou vários ficheiros .c).

exemplo:

lib.c

int f1(int x)
{
  ...
}

int f2(int x)
{
  ...
}

int f3(int x)
{
  ...
}

lib.h

#ifndef _LIB_H
#define _LIB_H

int f1(int);
int f2(int);

#endif

sempre que quiseres usar a função f1 ou f2, fazes #include "lib.h". ao compilar vais precisar de fornecer o .c ou um .o criada a partir do .c.

isto nos casos mais simples.

depois, tal como já foi referido, podes ter bibliotecas estáticas (criadas com o ar+ranlib), e bibliotecas dinâmicas que ficam ainda um pouco mais complexas de se criar, para além de que a forma como são criadas varia de SO para SO e não são portáveis.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entao por exmplo para o 1º exemplo... faço as funçoes e depois gravo o ficheiro em .h

#ifndef _LIB_H
#define _LIB_H

int f1(int);
int f2(int);

#endif

neste caso como é se chama a biblioteca ? _LIB_H ou LIB.h ??

... coloco junto com as outras bibliotecas e quando quizer chamar noutro progrograma .c é so meter o seu nome no include

#include "biblioteca.h"

e chamar as funçoes ??????

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e depois precisas de fornecer o ficheiro na altura de compilar o programa, mas essencialmente é isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Normalmente os .h contêm definições de estruturas, protótipos de funções, grande parte do código para o pré-compilador (#define )

Os .c em geral contêm a implementação das funções.

Basicamente é fazer código no processo normal de quem programa C.

 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao para concluir é necessario isto ?

#ifndef _LIB_H
#define _LIB_H

int f1(int);
int f2(int);

#endif

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

referes-te às macros?

nem sempre é necessário, mas em certas situações evitam erros de compilação (por exemplo, quando fazes o include de um mesmo ficheiro vários vezes). o objectivo é que o ficheiro não seja incluído várias vezes, num mesmo programa.


neste caso como é se chama a biblioteca ? _LIB_H ou LIB.h ??

como quiseres, eu chamo-lhe lib. o _LIB_H nem precisa de estar relacionado com o nome da biblioteca, podes usar o nome que quiseres.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entao explicame como se faz o primeiro 3º. Que gostava de saber ja agora....

Cumps...

3º caso: compila o código sendo o output uma dll, isto para windows.

Agora para conseguires chamar as funções em código externo nem sempre é fácil, é necessário atenção ao tipo de chamadas e declarar a função como externa.

Em windows normalmente defino:

#define dllExport extern "C" __declspec(dllexport)

e uso nas funções que quero exportar.

dllExport void reg(int x);

Já agora. Também costumo usar bibliotecas portáveis para carregar dinamicamente as dll.

Tenho para aqui um código em que uso libtool-1.5.8-lib.zip

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora