Linguagem C - criando uma biblioteca. Onde esta o erro?

6 respostas
R

Estou tentando criar um biblioteca, mas não estou conseguindo.

código que será a biblioteca: (minimo.c)

#include <stdio.h>
#include <stdlib.h>
#include "minimo.h"

int minimo (int nro1, int nro2)
{
    if (nro1>nro2)
       return (nro2);
       else
          return (nro1);       
     }

codigo do minimo.h:

/*minimo.h*/
extern int minimo (int nro1, int nro2);

codigo do programa que irá usar a função minimo.c

#include <stdio.h>
#include <conio.h>
#include "minimo.h"

int main()
{
    int n1=0, n2=0;
    printf ("Digite o primeiro número: ");
    scanf  ("%d", &n1);
    printf ("Digite o segundo número: ");
    scanf  ("%d", &n2);
    
    if (n1==n2)
       printf ("Os números informados (%d e %d) são iguais!", n1, n2);
     else
       printf ("O menor número é: %d", minimo(n1,n2));
       
    printf ("Pressione uma tecla para continuar...");
    getch();
    return (0);
    }

O erro aparece neste código:

  • [linker error] undefined reference to ‘minimo’
  • ld returned 1 exit status

6 Respostas

V

Como está sendo compilada a biblioteca?

Você está tendo um problema de linker. Provavelmente faltou referenciar as bibliotecas nos parâmetros do linker.

Ps: o código da sua função minimo pode ser simplificado para:

#include <stdio.h>
#include <stdlib.h>
#include "minimo.h"

int minimo (int nro1, int nro2)
{
   return nro1 > nro2 ? nro2 : nro1;
}
R

Oi.

Estou usando o devC++. Estou compilando normal (F9). Os programas não estão em nenhum projeto. Cada um é um arquivo.

V

Eu começaria substituindo o devcpp pelo Code::Blocks:
http://www.codeblocks.org

Já vi muita gente bater a cabeça no devcpp, por bugs do próprio dev, ou por usarem a versão pré-histórica de MinGW que vem com ele.

Na verdade, rodei aqui e funcionou.

R

Vou baixar esta ferramenta e testar.

E

Uma biblioteca, em C, é um arquivo .lib (formato Microsoft C) ou .a (formato Unix e acho que o gcc no Windows também - não conheço o gcc no Windows para dizer se o formato é .a ou .lib mesmo).
Por acaso está sendo gerado algum desses arquivos?

V

enantiomero:
Uma biblioteca, em C, é um arquivo .lib (formato Microsoft C) ou .a (formato Unix e acho que o gcc no Windows também - não conheço o gcc no Windows para dizer se o formato é .a ou .lib mesmo).
Por acaso está sendo gerado algum desses arquivos?

Pode ser um conjunto de arquivos .h também.

Criado 21 de setembro de 2009
Ultima resposta 21 de set. de 2009
Respostas 6
Participantes 3