linkittämisapua aloittelijalle

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");}
2398
Äänestä

Muut lukivat myös

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.

Äänestä

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.

Äänestä

Kommentoi aloitusta


tytön tyllerö kirjoitti:

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");}

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu