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

adresa funkcije u dllu

[es] :: Pascal / Delphi / Kylix :: adresa funkcije u dllu

[ Pregleda: 3858 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

twister

Član broj: 735
Poruke: 147
*.66.EUnet.yu



Profil

icon adresa funkcije u dllu27.08.2001. u 02:20 - pre 229 meseci
Potreban mi je file offset odredjene funkcije u dll-u.
U asm forumu mi je receno da treba da oduzmem vrednosti koje dobijem od GetProcAddress i LoadLibrary. Evo koda, ne znam gde gresim:
(izbacio sam provere tipa da li je DLL ucitan itd... i nisam siguran da li sam dobro uradio koverziju pointer u integer, tj. da li sam na ovaj nacin dobio vrednost koju ja zelim)

type TTestFunc=function:boolean;
var TestFunc:TTestFunc;

Handle:=LoadLibrary('DLLUnit.DLL');
...
@TestFunc:=GetProcAddress(Handle,'TestFunc');
...
fileoffset:=Handle-LongWord(addr(TestFunc));

Na ovaj nacin mi fileoffset ne pokazuje ono sto ja zelim. Gde gresim?

btw, a kako da otkrijem adresu te funkcije u memoriji kada se dll ucita?
 
Odgovor na temu

mikap
Miroslav Petrovic
none
Vranje

Član broj: 3538
Poruke: 86
*.ptt.yu

ICQ: 279012758
Sajt: www.dzeki.net


Profil

icon Re: adresa funkcije u dllu31.08.2002. u 20:58 - pre 217 meseci
Ja mislim da se adresa funkcije dobija sa getprocaddress()
by samadhi
Let there be Pascal and God made Lazarus and blessed Linux
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.rcub.bg.ac.yu

Sajt: localhost


+4 Profil

icon Re: adresa funkcije u dllu31.08.2002. u 22:01 - pre 217 meseci
mislim da tebi ne treba fileoffset, jer je on offset na disku, a meni se cini da tebi treba pointer na funkciju u memoriji, kada se ucita, da bi mogao a je pozovesh.

nema potrebe da bilo sta oduzimash (mozda ako radish u asm-u, ali u delphi-u ne). evo ti kod za primer sa sve proverama za greske (to je vazno, narocito kad nesto ne radi, a ne znash sta ;)

Code:

// tackice zbog identa

type
....tTestFunc = function: boolean;

var
....hDll:THandle;
....TestFunc: tTestFunc;

begin
....hDll:=LoadLibrary('DLLUnit.dll);
....if hDll=0 then raise Exception.Create('Error loading dll !!!');
[email protected]:=GetProcAddress(hDll,'TestFunc');

....// i posle pozivash doticnu funkciju sa:

....if TestFunc then begin

........// bla truc

....end;
end;


btw, koliko vidim, ti si sam napravio taj dll, pa ako imash problema sa svim ovim, mozda je tu greska. probaj sa nekim tudjim dll-om koji provereno radi, pa kada naterash ovaj gornji kod da ti radi, onda isprobaj da ga naterash da radi i sa tvojim dll-om, a ako nece, u tvom dll-u trazi gresku...

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: adresa funkcije u dllu

[ Pregleda: 3858 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

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