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

Dva .dll-a sa istim nazivom ali nisu isti

[es] :: Pascal / Delphi / Kylix :: Dva .dll-a sa istim nazivom ali nisu isti

[ Pregleda: 2280 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Dva .dll-a sa istim nazivom ali nisu isti09.12.2015. u 13:52 - pre 55 meseci
Opet ja sa čudnim problemima :D

Dakle, imam dva .dll-a koji moraju biti u istom folderu gdje je i .exe aplikacije. Imaju isti naziv (libeay32.dll) ali su različite verzije. Treba mi i jedna i druga verzija. Koliko sam pronašao na google-u, nije pametno, a i možda ne bi radilo na svim PC-evima da idem mijenjati PATH .dll-ova.

Da li netko ima iskustva, savjeta?

Hvala
F
 
Odgovor na temu

((BugA))
Igor Djordjevic
Bor, Srbija

Član broj: 29241
Poruke: 196
*.dynamic.sbb.rs.

ICQ: 66516695
Sajt: www.MalamutKlub.com


+17 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti09.12.2015. u 20:58 - pre 55 meseci
:)

Prvo, da li TEBI treba i jedna i druga verzija, ili interno nekoj biblioteci koju koristis? Drugo, kako to mislis "menjati PATH .dll-va"?

Ovo prvo pitam u smislu da li ti licno ucitavas DLL-ove u aplikaciju, imajuci pritom potpunu kontrolu nad nacinom kako to radis (i mogucnost da proveris kad si koji DLL ucitao), ili neka biblioteka (Indy?) to radi sama za sebe, na uobicajeni ili neki specifican nacin.

Ako sam ucitavas i koristis DLL-ove, onda nema problema, mozes ih staviti gde god hoces, i ucitavati odatle. Ipak, pretpostavljam da nemas kontrolu nad nacinom ucitavanja, cim postavljas ovakvo pitanje...? Ako je tako, zanima me kako mislis da program (odnosno ta biblioteka) zna kada je koji DLL ucitala (pa da eventualno ucita drugi, ako joj on treba)? Da li imas nacin da ti to kontrolises (menjajuci izvorni kod te biblioteke, ili vec nekako)?

Ovo drugo me interesuje jer ne znam na sta tacno mislis. Ako se DLL-ovi ucitavaju na uobicajeni nacin (samo ime dll-a, gde se nalazenje putanje ostavlja sistemu), onda gde god da stavis dll-ove uvek ce biti ucitan onaj koji se prvi nadje na putanji pretrage.

Ako nemas mogucnosti da kontrolises kad se i kako koji DLL ucitava, prvo sto mi pada na pamet je pravljenje treceg, proxy DLL-a koji ce nositi isti taj naziv i biti kraj EXE fajla, a druga dva ces imenovati kako hoces i staviti gde hoces - proxy DLL treba da exportuje sve metode koji ce EXE koristiti iz druga dva DLL-a, i da po potrebi ucitava jedan i/ili drugi, i sam poziv koji je njemu upucen prosledjuje odgovarajucem DLL-u.

Druga varijanta je da nekako unutar same aplikacije (EXE) presreces pozive metodama DLL-a (neki hook?), pa da po potrebi ucitavas i podmeces odgovarajuci DLL.

E sad, mozda ne bi bilo lose da nam malo detaljnije opises situaciju/problem koji te je doveo do toga da zelis da koristis dva ista (a razlicita) DLL-a iz istog foldera, mozda postoji prostije resenje...? :)
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 790
188.124.211.*



+61 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti10.12.2015. u 08:26 - pre 55 meseci
Zar je moguce imati dva fajla sa istim imenom u jednom folderu..?

Pozz
 
Odgovor na temu

((BugA))
Igor Djordjevic
Bor, Srbija

Član broj: 29241
Poruke: 196
87.250.41.*

ICQ: 66516695
Sajt: www.MalamutKlub.com


+17 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti10.12.2015. u 09:54 - pre 55 meseci
Nije, u tome i jeste osnova/suština problema :)
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
2001:420:c0c0:1003:.*



+395 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti10.12.2015. u 10:11 - pre 55 meseci
Stavis jednu verziju u glavni folder (path1) gde je .exe a drugi u odvojeni folder recimo "old version" (path2) i
ucitavas dll-ove dinamicki sa LoadLibrary(path1) a drugi LoadLibrary (path2)

Mada i dalje mi nije jasno zasto koristis 2 verzije openssl-a v(libeay.dll) u kodu? :)
Viva lollapalooza
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 192
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti10.12.2015. u 10:23 - pre 55 meseci
U istom folderu je nemoguće, jedino jedan ostaviti u rutu programa a drugi snimi u "...\Windows\System32", mada mislim da ni to nije rešenje ako ih ne učitavaš ručno.
Nikad izvini!
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti10.12.2015. u 11:26 - pre 55 meseci
Dakle, za fiskalizaciju koristim openssl i njegov libeay32.dll.
Indy ima svoj libeay32.dll (pronašao sam na google-u da taj Indy-ev libeay nema nikakve veze sa openssl-om, a zašto su ga tako nazvali je dobro pitanje :/ ).

Kako mi za fiskalizaciju treba taj od openssl-a, a za nešto drugo mi treba ovaj od Indy-a, moraju bi oba dva biti u istom folderu. Pronašao sam način za preimenovati jedan libeay32.dll, njegovo ime je definirano u sourceu libeay32.pas

Code:
  LIBEAY_DLL_NAME = 'libeay32.dll';


Samo šta imam još par dll-ova, npr. ssleay32.dll, a za njega ne mogu nigdje pronaći gdje ga preimenovati ili mu odrediti putanju odakle če se učitavati. Ja te .dll-ove nigdje ne pozivam sa LoadLibrary.

Znam da je problem "glup" ali na žalost tako je kako je :/
F
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 192
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti10.12.2015. u 12:36 - pre 55 meseci
Pretpostavljam da koristiš neki eksterni .exe file (program koji koristi openssl sa svojim dll-ovima) kome prosleđuješ parametre za fiskalizaciju ili šta već, i on ti se nalazi u direktorijumu gde i program.

U koliko je tako, premesti sve u neki drugi poddirektorijum u ubaci u njega taj exe i dll-fajlove koji njemu pipadaju, tako da će ti indy-jevi dll-ovi ostati u rutu tvog programa, i promeni putanju za pozivanje exe fajla u ShellExecute ili kako već pozivaš.

Nikad izvini!
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti10.12.2015. u 14:55 - pre 55 meseci
Da barem koristim neki drugi .exe. Sve je u jednom .exe-u. Znači iz mog programa radim fiskalizaciju i iz mog programa radim prijavu gostiju (koja koristi taj drugi .dll)...
F
 
Odgovor na temu

((BugA))
Igor Djordjevic
Bor, Srbija

Član broj: 29241
Poruke: 196
*.dynamic.sbb.rs.

ICQ: 66516695
Sajt: www.MalamutKlub.com


+17 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti10.12.2015. u 17:28 - pre 55 meseci
Hoce li raditi ako pre odredjenog zadatka (fiskalizacija ili prijava gostiju) sam ucitas odgovarajuci DLL? Onda nije bitno gde se nalazi, a ti vec znas kad ce ti koji trebati - ne bas tacno, ali ako pokrenes "proceduru" za fiskalizaciju, znas da ce ti do kraja procedure trebati odredjeni DLL.

Isto tako i za prijavu gostiju - npr. kad korisnik klikne na dugme za prijavu (ili kako god, sustina je da imas mogucnost da odredis pocetak procedure), ti ucitas DLL, pa nastavis dalje. Na kraju, uradis FreeLibrary(), i `ajde Jovo nanovo :)

E sad, ako postoji mogucnost da se te dve procedure pokrenu manje-vise istovremeno, onda je to novi problem, u suprotnom bi trebalo da radi.

A sumnjam da ti Indy fajlovi nemaju nikakve veze sa OpenSSL-om (interesovalo bi me da vidim gde si to nasao), ali znam da su neke starije verzije Indy-ja koristile "dopravljene" verzije originalnih DLL-ova. To zaista moze predstavljati problem, ako koristis razlicite biblioteke (cak i razlicite verzije Indy-ja) koje zahtevaju razlicite DLL-ove (sto je kod tebe, izgleda, slucaj).

Eventualno, ako imas vremena, mozes probati da nadjes fajlove koji ce raditi za obe biblioteke, mada je pitanje da li, u tvom slucaju, takvi postoje.

Kao solomonsko (ali ipak) resenje, ako nista ne pomaze, uvek mozes razdvojiti delove aplikacije, pa da svaki deo ima odgovarajuci DLL kraj sebe :P Ipak, nadam se da za tim nece biti potrebe.
 
Odgovor na temu

Almedin

Član broj: 5895
Poruke: 390
92.36.200.*



+25 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti10.12.2015. u 22:04 - pre 55 meseci
1. Sa IdOpenSSLSetLibPath kažeš Indy-u gdje su dll-ovi.

2. Možeš li koristiti mscrypto umjesto openssl?
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti11.12.2015. u 10:00 - pre 55 meseci
Ljudi puno hvala na odgovorima, danas isprobam opcije i od Bug-a i od Almedina pa javim :)
F
 
Odgovor na temu

((BugA))
Igor Djordjevic
Bor, Srbija

Član broj: 29241
Poruke: 196
*.dynamic.sbb.rs.

ICQ: 66516695
Sajt: www.MalamutKlub.com


+17 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti11.12.2015. u 10:57 - pre 55 meseci
Ako tvoja verzija Indy-ja podrzava (ima) IdOpenSSLSetLibPath() funkciju koju je Almedin preporucio, onda ti je to, mislim, zaista najelegantnije resenje. U suprotnom, LoadLibrary/FreeLibrary bi trebalo da ti zavrsi posao. `Ajd`, pa javi sta si napravio :)
 
Odgovor na temu

Almedin

Član broj: 5895
Poruke: 390
92.36.200.*



+25 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti11.12.2015. u 16:41 - pre 55 meseci
Citat:
captPicard:
Ljudi puno hvala na odgovorima, danas isprobam opcije i od Bug-a i od Almedina pa javim :)


Meni su oba rjesenja, koja sam predložio, radila.
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Dva .dll-a sa istim nazivom ali nisu isti17.12.2015. u 23:35 - pre 55 meseci
Pronašao sam u souceu od Indy-a gdje definira ime .dll-ova, tamo izmijenio i radi. Hvala puno svima na pomoći.
F
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Dva .dll-a sa istim nazivom ali nisu isti

[ Pregleda: 2280 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

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