Eli harjoittelen yksinkertaista oman kirjaston luontia ja sen käyttöönottoa (dev-c ohjelma)
Olen tuossa raapustanut muutaman yksinkertaisen funktion kirjaston sekä otsikkotiedoston( onkohan oikein kirjoitettu?)
Sisällytän pääohjelmaani nyt include-rivillä otsikkotiedoston ja kutsun kirjaston funktiota.
Miten linkitän tiedostot yhteen ajettavaksi ohjelmaksi?
Otsikkotiedosto oma.h
//muuttujien määrittelyt
double km, mailit, num;
extern void eka(double km, double mailit);
extern double toka(double num);
extern void kolmas(void);
kirjastotiedosto oma.c
#include
/*Muuttaa etäisyydet maileista kilometreiksi*/
extern void eka(double km, double mailit){
km=1.609*mailit;
printf("%lf km = %lf mailia\n", km, mailit);
return;
}
/*laskee käyttäjän syöttämien reaalilukjen tulon*/
extern double toka(double num){
double vastaus;
vastaus=num*num;
return(vastaus);
}
/* tulostaa nimen pekka näytölle*/
extern void kolmas(void){
printf("pekka\n");}
Olen tuossa raapustanut muutaman yksinkertaisen funktion kirjaston sekä otsikkotiedoston( onkohan oikein kirjoitettu?)
Sisällytän pääohjelmaani nyt include-rivillä otsikkotiedoston ja kutsun kirjaston funktiota.
Miten linkitän tiedostot yhteen ajettavaksi ohjelmaksi?
Otsikkotiedosto oma.h
//muuttujien määrittelyt
double km, mailit, num;
extern void eka(double km, double mailit);
extern double toka(double num);
extern void kolmas(void);
kirjastotiedosto oma.c
#include
/*Muuttaa etäisyydet maileista kilometreiksi*/
extern void eka(double km, double mailit){
km=1.609*mailit;
printf("%lf km = %lf mailia\n", km, mailit);
return;
}
/*laskee käyttäjän syöttämien reaalilukjen tulon*/
extern double toka(double num){
double vastaus;
vastaus=num*num;
return(vastaus);
}
/* tulostaa nimen pekka näytölle*/
extern void kolmas(void){
printf("pekka\n");}
Vastaukset 2
Vanhimmat
..täälläkin. En osaa vastata tohon kysymykseen, mutta ainakin C for dummies -kirjassa kerrotaan aika selkeesti miten noi linkitykset ym. tehdään.
Siinä on sellasta tekstiä että jopa meikäläinenkin ymmärtää sitä.
Mulla on toi sama dev c , ja sitä käytetään tossa kirjassakin.
Oletko luomassa dll:ää vai mitä? Onko käytössäsi cygwin vai mingw?
En valitettavasti osaa neuvoa dev-c :n kannalta.
esim. jos käytössäsi olisi gcc (c:llä näköjään kodastelet) ja luot jaetun kirjaston linuxissa niin se menisi tähän tapaan
gcc -c oma.c -o oma.o
gcc oma.o -shared -o oma.so
gcc main.c -L. -loma -o munohjelma
jolloin voit suoraan kutsua suoraan pääfunktiosta ilman otsikkotiedoston sisällyttämistä:
//main.c
int main() {
kolmas();
return 0;
}
//eof
Mutta sinähän voit käyttää tuota ilman kirjastojakin näin:
//main.c:
#include "oma.h"
int main(){
kolmas();
return 0;
}
//eof
ja sitten vaan käännät normaalisti (main.c oma.c), mutta tätähän sinä et ilmeisesti ainakaan tarkoittanut.