es varu lib failu c

M

Mahmed

Guest
Es vēlos zināt, kā es varu darboties bibliotēkā failus.patiesībā es gribu pirmkodu c, lai funkcijas ir defination bibliotēkā failus un prototipu galvenes failā
piemēram:
int summa ()
(
atgriezties 5 5;
)
pleaze sūtīt man soli pa solim procedūru.
i want prototipēšana funkcijas summas () in header failā sum.h un defination in sum.lib
Kā es varu darīt abus šos failus.i want to slēpt avots lib faili Paldies

 
Hi Mahmed,Bibliotēka ir kolekcija moduļus, katram modulim, kas satur vienu vai vairākasfunkcijas un / vai datu definīcija.
No bibliotēkas detalizācijas irmodulis, tāpēc Linker būs izraksts pilnu moduļus no bibliotēkas, pat jato tikai vajadzības vienu no simboliem kas definēta.
Iekšpusē datibibliotēkas fails ir strukturēts tādā veidā, lai Linker darbu ko vieglivien iespējams (kas savieno lielās statisks bibliotēkās kādreiz bija lielas sāpesatpakaļ, kad diski bija (daudz) lēnāk nekā šobrīd).
Bibliotēkas ir radīts ar īpašu līdzekli, sauksim to bibliotekārs.Tā devums ir viena vai vairāku priekšmetu failus, kas izveidoti ar kompilatoru.
Produkcijair bibliotēka, kurā katrs objekts failu kā moduli.
Bibliotekārs varveikt arī bibliotēka uzturēšana: izņemt moduļi, nomainīt moduļus, pievienotjaunu moduļu bibliotēkai, sarakstam ar bibliotēku.
Kompilators parasti nezina neko par bibliotēkām.
Un visitas vēl ir teicis par tām funkcijām un datiem, ko tie satur.To parasti sasniedz ar bibliotēkas header failu (s), ko pievienobibliotēka pati.
Kompilators nesaista * jebkuru * bibliotēkai, jo tas irdarbu Linker.
Linker būs saite, pēc noklusējuma, bibliotēkām, kas nāk arkompilators, īstenojot standarta C bibliotēkas un neatkarīgi paplašinājumiimplementor nosaka, ka (es uz tās kā sistēmas bibliotēkām, kaspārējo šo pamācību).
Saistīt savu bibliotēku, jums irskaidri prasa Linker meklēt tās simbols atrisināšanāprocesu, tostarp to vārda, parasti pēc tam, kad no vārdiemobjekts faili, kas izmanto stuff no bibliotēkas.
Šeit ir demo, piemēram, ka ir jāstrādā jebkurā Unix sistēmu.
Kodspats par sevi ir platformas neatkarīga, tikai komandas izmantoto Unix specifiski.Meklējot to ekvivalentu jūsu nav Unix sistēmu būtu pamācošsexercise.
Mūsu bibliotēkā ir divi moduļi, katrs no tiem satur vienu funkciju.Bibliotēka header fails ir jāpaziņo šīs divas funkcijas:
fangorn: ~ / tmp 74> cat demo.h# ifndef DEMO_H_INCLUDED__# define DEMO_H_INCLUDED__
anulēts demo_foo (spēkā neesošs);anulēts demo_bar (spēkā neesošs);
# endif
Preprocessing direktīvas nav patiešām vajadzīgas šim maznozīmīgusPiemēram, to nolūks ir izvairīties no vairāku iekļaušanugalvenes.
Sarežģītākas headers vajadzīga šāda aizsardzība, tomēr,īpaši, ja tās nosaka viņu pašu makro.
Tagad mums ir, lai īstenotu funkciju deklarē galvene:
fangorn: ~ / tmp 78> cat demo_foo.c# include <stdio.h># include "demo.h"
anulēts demo_foo (spēkā neesošs)(liek ( "Šī ir demo_foo darbībā");)fangorn: ~ / tmp 79> cat demo_bar.c# include <stdio.h># include "demo.h"
anulēts demo_bar (spēkā neesošs)(liek ( "Šī ir demo_bar darbībā");)
Ņemiet vērā, ka katrs fails ietver arī bibliotēku galvenes.
Tas ir nepieciešams,lai pārliecinātos, ka faktisko funkciju definīcija atbilst funkcijasdeklarācija bibliotēka galvenē.
Tas ir ļoti viegli mainīt funkcijasdefintion un aizmirst, lai atjauninātu bibliotēkas header tādēļ, lai,iekļaujot bibliotēku header mēs deleģēt kompilators darbupārbaudi, ka funkcija deklarācijas galvenē un funkcijasdefinīcija avota failu vēl nav sinhronizēti.
Tagad ir pienācis laiks veidot mūsu bibliotēkā.
Pirmkārt, apkopot mūsu divas funkcijasobjekta kods:
fangorn: ~ / tmp 80> cc-c demo_foo.cfangorn: ~ / tmp 81> cc-c demo_bar.c
Kā rezultātā mēs esam faili demo_foo.o un demo_bar.o, kas varvar izmantot, lai veidotu mūsu demo bibliotēka:
fangorn: ~ / tmp 82> Ar r demo.a demo_foo.o demo_bar.o
Tagad mums ir demo.a, bibliotēkā (vai arhīvs Unix lingo, tādējādinosaukums ar par bibliotekāru (archiver) un. sufikss par bibliotēkufails).
Mēs varētu pārbaudīt tā saturu, izmantojot pašu komandu mēs izmantojāmveidot tā, atsaucas citādi, protams:
fangorn: ~ / tmp 85> Ar t demo.ademo_foo.odemo_bar.o
Tas nav mums stāsta, tomēr, kas ir iekšā katrā modulī.
Šimmērķi, Unix ir vēl viena komanda, vārds nosūcējs lietderība:
fangorn: ~ / tmp 83> nm demo.a
demo_foo.o:00000000 T demo_fooU liek
demo_bar.o:00000000 T demo_barU liek
Simboliem apzīmējot ar T nosaka moduli, simboli karoguar U izmanto moduli, bet nākotnē jādefinē kaut kur citur.
Un tagad mēs varam izmantot mūsu demo bibliotēka, ar programmu, kā niecīgs, kābibliotēka sevi:
fangorn: ~ / tmp 89> cat demo.c# include "demo.h"
int main ()(demo_foo ();demo_bar ();return 0;)
Lai izveidotu programmu, mums ir divas izvēles:
1.
Apkopo galvenos programmu atsevišķi, pēc tam saiti, kas izriet objektsar mūsu bibliotēkas (un, netieši, ar sistēmas bibliotēkām):
fangorn: ~ / tmp 90> cc-c demo.cfangorn: ~ / tmp 91> cc-o demo demo.o demo.afangorn: ~ / tmp 92>. / demoTas ir demo_foo darbībāTas ir demo_bar darbībā
2.
Veikt shortcut un darīt visu ar vienu komandrindu.
Tas irfaktiski nav iespējams, uz dažām nav Unix sistēmas.
fangorn: ~ / tmp 93> cc-o demo demo.c demo.afangorn: ~ / tmp 94>. / demoTas ir demo_foo darbībāTas ir demo_bar darbībā
Cc komanda atzīst failus. O un. Objekta sufiksi,attiecīgi, bibliotēkas failiem un nemēģina veikt jebkuru darbībupar tiem, izņemot iet tiem Linker.
Linker uzliks visuobjekta failu kopā un tad mēģināt risināt visus trūkstošos simbolus nobibliotēkas, ko lietotājs, ietverot tikai modules vajadzīgišim nolūkam.
Ja viena bibliotēka modulis izmanto simbolus, kuri nav jau noteikts,bibliotēkām tiek meklēti vēlreiz.
Jebkura simboli, kas ir vēlnenoteikts, sistēmas bibliotēkām tiek meklēti.
Man ir apskatīts tikai statiskas bibliotēkas šajā pantā, jo tie irbibliotēkām jūs varētu būt ieinteresēti, jūsu pašreizējā līmenī.
Pabeigtību, dinamisku (vai kopīgi) bibliotēkām ir nepieciešams minēt, too.Dažas bibliotēkas funkcijas, jo īpaši no sistēmas bibliotēkām, irizmanto daudzas programmas.
Tostarp to kodu katrai programmai nepieciešamsviņiem būtu visai izšķērdīga ziņā saistīt laika, izpildāmā failaizmērs un iekraušanas laikā.
Pastāv arī bibliotēku ir jautājumsatjaunošana, drošības labojumi piemēro un tā tālāk.
Programmas, izmantojot statiskusbibliotēkās būtu jābūt relinked, lai gūtu labumu no jaunajāmbibliotēkas.
Šīs problēmas risinājums ir lietošanas kopīgu bibliotēkām.
Viņumoduļi nav iekļauti izpildāmā faila Linker tikaipārbaudes, kuras kopīgi bibliotēka moduļi ir nepieciešami, lai atrisinātu visasneatrisinātais simboli programmu.
Kad programma tiek palaista, iekrāvējspārbaudīs, kas atbalsta moduļi, kas vajadzīgi programmas jau navielādes sistēmas atmiņas un slodzes tos tur, nevis kopāar pārējo programmu.
Kad ielādes sistēmas atmiņu, jebkurācita programma nepieciešamības tos var izmantot pašu eksemplāru, tādējādi ietaupot gan atmiņasun diskā.
Vēl viena priekšrocība ir tā, ka nav relinking ir nepieciešams, laiizmantot bibliotēkas pilnveidoti.
Diemžēl, viss, kas saistīti ar radīšanu un uzstādīšanadalīta bibliotēkām ir ārkārtīgi sistēmas īpatnībām, bet lielākā daļa diskusijupar to, kā rakstīt bibliotēka piemērojams to gadījumā, too.
Daudzos gadījumospats bibliotēka pastāv gan kopīgas un statisko formu, veidots noļoti paša avota failus.cheers ...

 
izmantot Keil.caopy funkciju txt justies.pārdēvēt failu ar "name". h pagarinājumu.define mainīgajiem un kā extren funkcijas

 
visvairāk ide's kompilatori ir projekts iespēja sastādīt to exe vai lib.

 

Welcome to EDABoard.com

Sponsor

Back
Top