Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Staticko linkovanje u Delphiju

[es] :: Pascal / Delphi / Kylix :: Staticko linkovanje u Delphiju

[ Pregleda: 3166 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.ptt.yu.

Sajt: b.flyingoranges.com


+117 Profil

icon Staticko linkovanje u Delphiju03.10.2006. u 15:16 - pre 182 meseci
Pozdrav,

Citao sam negde da u Delphiju nije moguce staticko linkovanje .lib fajlova, kao npr. u C-u. Da li medjutim ipak postoji neki nacin? Razmisljao sam da spojim DLL sa EXE fajlom, pa onda prilikom startovanja iscitam bajtove iz EXE fajla i da napravim temp fajl, tj. moci ce da se poveze sa programom. Medjutim mnogo bolje bi bilo kad bi postojao neki vec postojeci nacin u Delphiju.

Inace koristim Delphi 5.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2666



+73 Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 17:45 - pre 182 meseci
> Citao sam negde da u Delphiju nije moguce staticko linkovanje .lib fajlova, kao npr. u C-u. Da li medjutim ipak postoji neki nacin?

Lib fajlovi su specifični za C, statičko povezivanje možeš ostvariti i u Delphiu ali na drugi način.

> Razmisljao sam da spojim DLL sa EXE fajlom, pa onda prilikom startovanja iscitam bajtove iz EXE fajla i da napravim temp fajl, tj. moci ce
> da se poveze sa programom. Medjutim mnogo bolje bi bilo kad bi postojao neki vec postojeci nacin u Delphiju.

Nisam te uopšte razumeo, objasni šta zapravo hoćeš.


 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.ptt.yu.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 18:02 - pre 182 meseci
:)

Ovako, imam exe fajl sto sam napravio u Delphiju. Spojim ovaj exe fajl sa jednim zip fajlom. To mogu da uradim npr. sa

copy /b program.exe /b + arhiva.zip /b rezultat.exe /b

Dakle rezultat.exe sadrzi i moj program i zip fajl. E sada, kada se pokrene ovaj program i korisnik pritisne dugme Extract, onda se desava sledece:
1) Napravim kopiju exe fajla
2) Otvorim tu kopiju
3) Seek-ujem do 232632-tog bajta, i nakon toga ostatak upisujem u jedan poseban fajl
4) Taj poseban fajl je zapravo onaj prvobitni ZIP fajl
5) Sada, koristeci ZipMaster biblioteku, ja extractujem taj zip fajl negde
6) Na kraju brisem temp fajlove

Ovo sve lepo radi, ali problem je sto ZipMaster koristi poseban fajl DelZip179.dll, tj. bez njega nece da radi. Posto je glupo da imas self-extracting arhivu koja ne radi bez nekog dll-a, onda je resenje da taj dll linkujem zajedno sa ostatkom programa u jedan jedinstven exe fajl, tj. da uradim staticki link.

Kako se ovo moze uraditi u Delphiju?
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 18:05 - pre 182 meseci
Hm.. nisam siguran da te razumem, ali mozda mozes to da izvedes tako sto ces mapirati fajl sa CreateFileMapping, MapViewOfFile etc...
Ako lupam brisite :)
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.ptt.yu.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 18:07 - pre 182 meseci
Ono moje (glupavo) resenje je da spojim

program + dll + zip

pa posle kada se pokrene program da kopiram sve izmedju 232632-og i 436265-og bajta u jedan poseban dll fajl, i posle uradim LoadLibrary. Onda sve posle 436265-og bajta kopiram u poseban zip fajl itd.

Ali ovo se sigurno moze uraditi i lakse, tj. statickim linkovanjem.
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.ptt.yu.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 18:09 - pre 182 meseci
Citat:
Hm.. nisam siguran da te razumem, ali mozda mozes to da izvedes tako sto ces mapirati fajl sa CreateFileMapping, MapViewOfFile etc...
Ako lupam brisite :)

Nemoguce da me niko ne razume!!! Pa meni je sve jasno! :)
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.dialup.neobee.net.



Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 19:31 - pre 182 meseci
Pozdrav,

verovatno si malo zakomplikovao pitanje, siguran sam da si bolje objasnio i rešenje bi dobio brzo.
Možda ti je pristup rešenju problema pogrešan. To često zna biti problem.
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 20:07 - pre 182 meseci
Citat:
gajo2: Nemoguce da me niko ne razume!!! Pa meni je sve jasno! :)

Je'l to hoćeš da uradiš neku samoraspakirajuću instalaciju ili tražiš način da zaštitiš svoj program?
Za ovo prvo sam siguran da imaš već gotova rješenja (besplatna). Možda ti je stvarno pristup pogrešan.
Pojasni malo, kakva je svrha toga.
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.ptt.yu.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 20:18 - pre 182 meseci
Pa zelim da napravim self-extracting ZIP fajl. To je sve. Imam svoj exe fajl, i posle njega ide zip fajl. Moj exe fajl raspakuje zip fajl.

Meni je problem samo sto koristim ZipMaster biblioteku, koja zahteva jedan DLL fajl. Ja zelim da svako moze da pokrene exe fajl bez ovog dll-a. Resenje za to je da se dll staticki linkuje sa ostatkom programa.

Ili jednostavno receno, kako mogu staticki da linkujem LIB fajl u Delphiju?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2666



+73 Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 20:50 - pre 182 meseci
> copy /b program.exe /b + arhiva.zip /b rezultat.exe /b

> Dakle rezultat.exe sadrzi i moj program i zip fajl. E sada, kada se pokrene ovaj program i korisnik pritisne dugme Extract, onda se desava sledece:
> 1) Napravim kopiju exe fajla
> 2) Otvorim tu kopiju
> 3) Seek-ujem do 232632-tog bajta, i nakon toga ostatak upisujem u jedan poseban fajl
> 4) Taj poseban fajl je zapravo onaj prvobitni ZIP fajl
> 5) Sada, koristeci ZipMaster biblioteku, ja extractujem taj zip fajl negde
> 6) Na kraju brisem temp fajlove

> Ovo sve lepo radi, ali problem je sto ZipMaster koristi poseban fajl DelZip179.dll, tj. bez njega nece da radi. Posto je glupo da imas
> self-extracting arhivu koja ne radi bez nekog dll-a, onda je resenje da taj dll linkujem zajedno sa ostatkom programa u jedan jedinstven
> exe fajl, tj. da uradim staticki link.

Evo kako je lakše kada opišeš pravi problem. Nije neophodno da radiš tako kako si naumio, postoje biblioteke (recimo Chief's UNZIP ) za unzip sa source kodom tako da ih možeš slobodno uvezati sa ostatkom programa. Varijanta dva je da ne koristiš zip kao arhiver već zlib koji je dobro podržan u Delphiu i može se uključiti u sam exe.
Ako je iz nekog razloga ZipMaster obavezan uslov, dll možeš uključiti u exe kao resurs, raspakovati ga kada ti zatreba i posle ga obrisati.

> Ili jednostavno receno, kako mogu staticki da linkujem LIB fajl u Delphiju?

Nije moguće. Koristiš pogrešnu terminologiju, lib fajl sadrži informacije o načinu povezivanja programa i funkcija koje se nalaze u dllu, on ne sadrži izvršni kod i ne može se ni uključiti u exe, ono što se može uključiti u exe su .obj fajlovi.
 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 21:39 - pre 182 meseci
Ako baš hoćeš sam nešto da radiš onako kako si započeo, iz Delphi-ja, pogledaj ovaj link:

http://delphi.about.com/od/objectpascalide/a/stub.htm

Ako ti to ne pomogne, možeš koristiti recimo 7-zip:

http://www.gdgsoft.com/faq/7zsfx.htm
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.dialup.neobee.net.



Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 21:48 - pre 182 meseci
Donji link ne ide!?!
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 22:28 - pre 182 meseci
U svakom slucaju, ne moras da koristis bas ZIP algoritam za pakovanje fajla, uzmi LZMA recimo koji ima identicni compression ratio, a ne treba ti nikakav dodatni DLL, vec samo jedan unit i nekoliko obj fajlova
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Staticko linkovanje u Delphiju03.10.2006. u 23:08 - pre 182 meseci
Delphi ne moze da linkuje *.lib fajlove, ali ima mogucnost da linkuje *.obj fajlove koji su, takodje, prilicno rasprostranjeni.

U tom obj fajlu moras da imas iskompajliran ceo dll koji ti treba. Ti sam ne mozes nikako od dll fajla napraviti lib ili obj fajl. Taj fajl moras da trazis/skines od kreatora dll fajla.

Cak i ako imas obj fajl, u njemu mora biti kompletan kod dlla... jer ako imas obj fajl koji radi LoadLibray, dll fajl ce ti opet trebati.

Ukratko, ako sa mesta gde si skinuo dll nemas obj fajl za staticko linkovanje, od posla nema nista.
 
Odgovor na temu

Nemanja Avramović
Software architect
Tap medical
Beograd, Srbija

Član broj: 32202
Poruke: 4383
195.252.99.*

Sajt: https://avramovic.info


+45 Profil

icon Re: Staticko linkovanje u Delphiju04.10.2006. u 11:08 - pre 182 meseci
Čekaj, da razjasnimo terminologiju Statičko linkovanje biblioteka je kada biblioteku učitavaš po pokretanju programa (samim tim ako ista ne postoji program neće raditi) a dinamičko linkovanje je kada biblioteku učitavaš onda kada ti zatreba neka njena funkcija. Ako ti je problem samo to što hoćeš da imaš aplikaciju "bez dll-ova" odnosno da ubaciš dll u exe, to možeš preko resursa, ali fajl opet moraš da izdvojiš u neki privremeni fajl. Ako je problem do kompresovanja, možeš da uzmeš recimo ZipForge, to je "native vcl", sve ide u exe fajl, bez dodatnih fajlova, a besplatna je za ličnu upotrebu. Besplatna verzija nema ama baš nikakva ograničenja
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.ptt.yu.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Staticko linkovanje u Delphiju05.10.2006. u 17:53 - pre 182 meseci
Evo konacno sam uspeo da sredim da sve radi :)

Napisao sam pismo autoru ZipMastera koji mi je rekao da postoji jedan RES fajl koji mogu kompajlirati sa programom i onda mi ne treba DLL. Na zalost, exe fajl onda postaje minimalno 350 KB, sto je preveliko.
Probao sam sa Chief's Zip bibliotekom, ali ona je napisana za Delphi 3 i ranije verzije, i koriste se unit-i koji vise ne postoje u Delphiju 5 (WinCrt, WinDos, Strings...)

Na kraju sam iz jednog linka sto ste ga ovde postovali nasao biblioteku Abbrevia. E to je pravo cudo, ne treba mu nikakav DLL a zauzima samo 15 KB kada se doda programu. Jako dobra stvar. Za svaki fajl sto se ekstraktuje iz arhive mozes posebno da navedes sta da se radi s njim, npr. ako je password-protected da izbaci dijalog za unos lozinke.

Dakle na kraju ispada da radi i sa ZIP arhivama koji su password-protected i kompresovani sa Winzip 9-ovom "Enhanced deflate (not portable)", tako da nemam reci, autori su stvarno majstori. Nakon UPX-a exe fajl je "samo" 200 KB, sto je dovoljno dobro.

Hvala svima na komentarima i savetima!
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Staticko linkovanje u Delphiju

[ Pregleda: 3166 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.