Problem s C++ bibliotekama

poruka: 4
|
čitano: 2.019
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
Problem s C++ bibliotekama

Pozdrav,

Uglavnom, ovih dana sam počeo malo više pručavati razne biblioteke i koristiti ih u svojim C++ projektima, pogotovo u suradnji s "Allegro" bibliotekom.

Naime, Allegro dođe skupa s .dll datotekama koje lako uvrstim u svoj projekt i sve radi kako treba, no imam pitanje u vezi biblioteka koa što su : "DUMB" ili "JpgAlleg" i slične.


Koristim Visual Studio C++ Express SP1.


Problem je u tome što većina tih biblioteka dolazi bez navedenih .dll datoteka, pa stvarno neznam kako bi mogao iskoristiti njihove funkcije.
Obično se one sastoje od hrpe .c i .h datoteka koje, koliko sam skužio treba compileati i tako dobiti .dll datoteku koju kasnije možeš koristiti u svojem projektu?

E sad, mene zanima kako ja jednu "DUMB" biblioteku koja nema te .dll datoteke nego ih se treba dobiti iz njegovih source fileova koje su u .raru - "stvorim" iz nje .dll koji će mi omogućavati da ga uvrstim u svoj projekt i koristim njezine funckije?


Nadam se da ste shvatili što sam htio reći, evo primjer je i "FMOD" biblioteka za reproduciranje zvuka koja uredno dolazi s .dll datotekama koje uvrstim i onda koristim sve što mi FMOD nudi. To nije slučaj s nekim od ovih.


Pa ako mi netko može opisati kratak postupak u VC++ Expressu kako bih to mogao izvesti pa da i naučim za ubuduće kod takvih "necompileanih" datoteka.


Hvala!

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Problem s C++ bibliotekama

Ako je library dio GNU sustava ili makar koristi autotoolse, downloadiraj windows build autotoolsa i otkucaj magicni trio (well, u tvom slucaju duo):

./configure.bat (?)

./make

Provjerit ces to jednostavno ako pregledas root direktorij sourceva i ako nadjes configure.bat skriptu.

 

Ako nema configure skripte, vrlo vjerojatno imas file nazvan Makefile. U tom slucaju, potrazi ako postoji file configure.h ili u rootu projekta ili medju ostalim headersima. Otvori i pregledaj razne compile opcije, najcesce su deskriptivne same po sebi ili imaju komentare, pa odluci sto ti treba.

 

Ako toga nema nego su samo cisti sourcei, onda otvori header fileove i analiziraj dependencye - negdje na papir napisi koji objectfile je dependency kome.

Onda sjedni, uzmi make tutorial u ruke i napisi makefile. Onda saznaj kako kreirati shared library sa compilerom koji koristis, ako koristis GCC ovo ce ti pomoci http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

 

Eh, da, jos nesto: ovo ce ici relativno lagano kako sam opisao pod uslovom da je library pisan za tvoju platformu. Ako nije... ceka te ne bas veseo posao portanja librarya.

 

Pitaj jos ako/kad trebas.

"Fans are clinging complaining dipshits who will never ever be happy for any concession you make. The sooner you shut up their shrilled tremolous voices, the happier are you going to be for it.&q
 
0 0 hvala 0
17 godina
neaktivan
offline
RE: Problem s C++ bibliotekama
Deus ex machina kaže...

Ako je library dio GNU sustava ili makar koristi autotoolse, downloadiraj windows build autotoolsa i otkucaj magicni trio (well, u tvom slucaju duo):

./configure.bat (?)

./make

Provjerit ces to jednostavno ako pregledas root direktorij sourceva i ako nadjes configure.bat skriptu.

 

Ako nema configure skripte, vrlo vjerojatno imas file nazvan Makefile. U tom slucaju, potrazi ako postoji file configure.h ili u rootu projekta ili medju ostalim headersima. Otvori i pregledaj razne compile opcije, najcesce su deskriptivne same po sebi ili imaju komentare, pa odluci sto ti treba.

 

Ako toga nema nego su samo cisti sourcei, onda otvori header fileove i analiziraj dependencye - negdje na papir napisi koji objectfile je dependency kome.

Onda sjedni, uzmi make tutorial u ruke i napisi makefile. Onda saznaj kako kreirati shared library sa compilerom koji koristis, ako koristis GCC ovo ce ti pomoci http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

 

Eh, da, jos nesto: ovo ce ici relativno lagano kako sam opisao pod uslovom da je library pisan za tvoju platformu. Ako nije... ceka te ne bas veseo posao portanja librarya.

 

Pitaj jos ako/kad trebas.

 

 

Ok, hvala probati ću navedene savjete... imaš li možda pojma zašto je potrebno takve procese prolaziti umjesto da je autor odmah kao u slučaju FMOD-a ili npr. Allegra dao potrebne .dll-ove i headere koje treba staviti u projekt da bi funckionirale i to je to?

 

Dali je razlog taj što su te biblioteke namjenjene za više platformi ili pak za samo Linuxe pa ih je potrebno nanovo buildati da bi bile kompatiblne na drugim platformama?

 

Poruka je uređivana zadnji put čet 16.7.2009 1:23 (ReiKo).
16 godina
neaktivan
offline
Problem s C++ bibliotekama

Pa, u principu je "najpristojnije" ponuditi sourceve sa stabilnim build skriptama i pored toga razlicite pre-buildane konfiguracije. Pored toga sto postoji potreba za 32bitnim i 64bitnim verzijama, i za razlicite OS-ove, netko bi mozda to htio compilirati kao staticki library i ukljuciti ga u svoj projekt. Dosta projekta ima na raspolaganju compile-time opcije, na primjer, kad compiliras Pidgin mozes odabrati na kojem GUI toolkitu ce raditi (GTK+, wxWidgets, Qt).

Takodjer ima i slucajeva kad netko zeli portati library na neki manje poznat sistem...

Evo cisto primjera radi, ja sam pred nekoliko dana portao neke dijelove iz ALSA sound drivera (MIDI parser) na AVR arhitekturu (mikrokontroleri).

Autor najcesce ili nema pristup raznim sistemima da bi izbuildao sourceve, ili nema vremena napisati pametniji build sustav - autotoolsi su enormno koristan i fleksibilan, ali uzasno kompliciran build system.

 

Library koji tebi treba, pretpostavljam, samo pati od nedostatka vremena autora da sastavi proper build system. To moze biti dosta kompliciran i ne bas zahvalan posao.

Tako da ako napravis taj makefile (odnosno sastavis nekakav rudimentaran build sistem) mogao bis lijepo doprinijeti projektu ako autoru posaljes skripte. Vjerojatno ce ti bit zahvalan i on i svi ostali ljudi koji zele izbuildati taj library, a i postavit ces temelje koje netko kasnije moze prosiriti i dopuniti opcijama...

 

Opensource for the win :-)

 

"Fans are clinging complaining dipshits who will never ever be happy for any concession you make. The sooner you shut up their shrilled tremolous voices, the happier are you going to be for it.&q
Poruka je uređivana zadnji put čet 16.7.2009 13:01 (Deus ex machina).
 
0 0 hvala 1
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice