[C]Creare una raccolta di funzioni

di il
2 risposte

[C]Creare una raccolta di funzioni

Salve, avrei un problema che, nonostante abbia cercato molto su Internet non sono riuscito a risolvere.
Dato che ci sono moltissime funzioni che uso quasi sempre, volevo creare una raccolta di funzioni così da scrivere solo una volta la funzione e poi andarmi a includere la libreria.
Ho capito come crearla (utilizzo Dev-C++ 5.8.3): si crea il file .h con i prototipi delle funzioni, un file .c con l'implementazione di esse e si compila, che porta al risultato di un file .a, in seguito per usare queste funzioni bisogna includere la libreria .h e mettere nelle opzioni del progetto il comando al linker per linkare il file .a.
Utilizzando questo metodo però io devo sempre andarmi a includere quei 2 file nel progetto, ciò che volevo realizzare io invece è una cosa molto più semplice: crei la libreria, la metti nelle cartelle di dev, la includi e usi le funzioni tranquillamente. Un po' come le libreria standard: per esempio se si vuole usare stdio.h non serve includere il file .h in ogni progetto e linkare il file .a, basta mettere #include <stdio.h> e basta in un file .c.
Spero di essermi spiegato correttamente, grazie in anticipo degli aiuti.

2 Risposte

  • Re: [C]Creare una raccolta di funzioni

    Non c'è differenza con le librerie standard.

    Il file .h lo devi includere sempre e le librerie stesse, i file .a, stanno nelle cartelle di default delle librerie.

    Metti la tua libreria nella cartella lib e l'include nella cartella include.
  • Re: [C]Creare una raccolta di funzioni

    Ho messo il file .a nelle cartelle legate alle librerie (lib), e il file .h nelle cartelle include.
    Ho poi provato a fare un source file e mettere:
    #include <stdio.h>
    #include <libreria.h>
    
    int main ( )
    {
    	printf ( "%d \n", somma ( 2, 5 ) );
    	
    	return 0;
    }
    poi ho provato a compilarlo ma dà l'errore "undefined reference to 'somma' ".
    dove ho sbagliato?

    per sicurezza allego anche i file .h e .c dell'implementazione:

    file header:
    int somma ( int, int );	// funzione per la somma
    implementazione:
    int somma ( int a, int b )
    {
    	return a + b;
    }
Devi accedere o registrarti per scrivere nel forum
2 risposte