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

n_digo

how to make ... Livrarias

Recommended Posts

n_digo

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

Share this post


Link to post
Share on other sites
Hipnoted

Não tem nada demais...

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

#include "biblioteca.h"

Depois podes chamar pelas funções normalmente.


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Share this post


Link to post
Share on other sites
n_digo

Assinatura retirada por Medida Cautelar... Cheesy LOOOOOOOOOOOOLLL

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

Share this post


Link to post
Share on other sites
Hipnoted

Fazes igual como se fosse num ficheiro .c


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Share this post


Link to post
Share on other sites
Hipnoted

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.


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Share this post


Link to post
Share on other sites
shumy

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.


Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Share this post


Link to post
Share on other sites
Cypher

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

Cumps...

Share this post


Link to post
Share on other sites
Rui Carlos

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.

Share this post


Link to post
Share on other sites
n_digo

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 ??????

Share this post


Link to post
Share on other sites
shumy

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.

 


Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Share this post


Link to post
Share on other sites
n_digo

entao para concluir é necessario isto ?

#ifndef _LIB_H
#define _LIB_H

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

#endif

Share this post


Link to post
Share on other sites
Rui Carlos

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.

Share this post


Link to post
Share on other sites
shumy

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


Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.