|
| DLL filer Fra : ~*~ Mivi ~*~ |
Dato : 14-06-01 15:23 |
|
Hej
Jeg har fået fat i en DLL, som indeholder nogle procedure jeg mener, jeg
burde kunne kalde.
Jeg har en beskrivelse af dem.
Jeg kan også deklarere nogen af dem !
Det gør jeg således:
Function OpenPort(Port : String) : Byte; stdcall; external 'd:\EZTTNT.DLL'
name 'openport';
Den virker.
Så er der andre beskrevet, som programmet (udviklet i D5) fortæller under
opstart, at den ikke kan finde.
Er der nogen mulighed for, at se, hvilke procedure / funktioner der er i
sådan en DLL fil ?
Michael
| |
Christian Iversen (14-06-2001)
| Kommentar Fra : Christian Iversen |
Dato : 14-06-01 15:43 |
|
> Jeg har fået fat i en DLL, som indeholder nogle procedure jeg mener, jeg
> burde kunne kalde.
[...]
> Function OpenPort(Port : String) : Byte; stdcall; external 'd:\EZTTNT.DLL'
> name 'openport';
[...]
> Så er der andre beskrevet, som programmet (udviklet i D5) fortæller under
> opstart, at den ikke kan finde.
>
> Er der nogen mulighed for, at se, hvilke procedure / funktioner der er i
> sådan en DLL fil ?
Nej, det er der desværre ikke!
MEN, der er mulighed for at se om en bestemt funktion er tilgængelig!
Du skal bruge det, der hedder "dynamic linking". D.v.s at du først henter
adresserne på de Methods du vil kalde, run-time.
Det du bruger nu, hedder "static linking". D.v.s. at dit program indeholder
noget information om, at du *SKAL* bruge en funktion der hedder "OpenPort" i
"EZTTNT.DLL". Hvis ikke *alle* de funktioner du har specificeret, er til
rådighed, kan programmet ikke starte.
Du skal kigge på WinAPI-funktionen "LoadLibrary", og "GetProcAddress". (Slå
dem op i Delhi-online-hjælpen)
Håber du får det til at virke!
--
Regards, Christian Iversen [FIDUSO]
Flawless.Dk: [ http://domains.flawless.dk]
Do you have a (broken?) IBM75GXP Drive?
Please go to [ http://ibm.flawless.dk]
| |
Peter Laursen (14-06-2001)
| Kommentar Fra : Peter Laursen |
Dato : 14-06-01 16:15 |
|
>
>Jeg har fået fat i en DLL, som indeholder nogle procedure jeg mener, jeg
>burde kunne kalde.
>
>Jeg har en beskrivelse af dem.
>Jeg kan også deklarere nogen af dem !
>Det gør jeg således:
>
>
>Er der nogen mulighed for, at se, hvilke procedure / funktioner der er i
>sådan en DLL fil ?
>
Det kommer lidt an på hvordan dll'en er skruet sammen, men du kan muligvis få delphi til at lave en tlb fil for dig. Eksempel i delphi5 (efter hukommelsen!) : Start delphi, og luk alle projekter. Vælg 'Import type library' under Project, click Add og browse til din .dll og 'Create unit'. Resultat (hvis det går godt) en dllnavn_TLB.pas med typedefinitioner.
/Peter
| |
Thomas Schulz (14-06-2001)
| Kommentar Fra : Thomas Schulz |
Dato : 14-06-01 20:19 |
|
>Det kommer lidt an på hvordan dll'en er skruet sammen, men du kan muligvis
få delphi til at lave en tlb fil for dig. Eksempel i delphi5 (efter
hukommelsen!) : Start
Er det ikke udelukkende ved (D)Com(+) Dll'er?
Thomas
| |
Jan (14-06-2001)
| Kommentar Fra : Jan |
Dato : 14-06-01 18:47 |
|
In article <wN3W6.2002$VQ4.180421@news010.worldonline.dk>,
mivi@occdata.dk says...
:Hej
:
:Jeg har fået fat i en DLL, som indeholder nogle procedure jeg mener, jeg
:burde kunne kalde.
:
:Jeg har en beskrivelse af dem.
:Jeg kan også deklarere nogen af dem !
:Det gør jeg således:
:
:Function OpenPort(Port : String) : Byte; stdcall; external 'd:\EZTTNT.DLL'
:name 'openport';
:
:
:Den virker.
:
:Så er der andre beskrevet, som programmet (udviklet i D5) fortæller under
start, at den ikke kan finde.
:
:Er der nogen mulighed for, at se, hvilke procedure / funktioner der er i
:sådan en DLL fil ?
:
:Michael
:
:
Prøv at se på TDump.exe.
Ligger i dit BIN bibliotek.
| |
Uffe Kousgaard (14-06-2001)
| Kommentar Fra : Uffe Kousgaard |
Dato : 14-06-01 21:40 |
|
Hej
Til NT4 havde jeg et quickviewer program som kunne liste alle navne på
eksporterede procedurer i en DLL, men der er vist ingen mulighed for at se
procedurernes parametre.
Desværre har W2000 ikke den samme viewer indbygget.
Hilsen
Uffe
"~*~ Mivi ~*~" <mivi@occdata.dk> wrote in message
news:wN3W6.2002$VQ4.180421@news010.worldonline.dk...
> Hej
>
> Jeg har fået fat i en DLL, som indeholder nogle procedure jeg mener, jeg
> burde kunne kalde.
>
> Jeg har en beskrivelse af dem.
> Jeg kan også deklarere nogen af dem !
> Det gør jeg således:
>
> Function OpenPort(Port : String) : Byte; stdcall; external 'd:\EZTTNT.DLL'
> name 'openport';
>
>
> Den virker.
>
> Så er der andre beskrevet, som programmet (udviklet i D5) fortæller under
> opstart, at den ikke kan finde.
>
> Er der nogen mulighed for, at se, hvilke procedure / funktioner der er i
> sådan en DLL fil ?
>
> Michael
>
>
>
| |
Jan (14-06-2001)
| Kommentar Fra : Jan |
Dato : 14-06-01 23:34 |
|
In article <9i9W6.397$Os1.52281@news.get2net.dk>, uffe@routeware.dk
says...
:Hej
:
:Til NT4 havde jeg et quickviewer program som kunne liste alle navne på
:eksporterede procedurer i en DLL, men der er vist ingen mulighed for at se
:procedurernes parametre.
:
:Desværre har W2000 ikke den samme viewer indbygget.
:
:Hilsen
:Uffe
:
:"~*~ Mivi ~*~" <mivi@occdata.dk> wrote in message
:news:wN3W6.2002$VQ4.180421@news010.worldonline.dk...
:> Hej
:>
:> Jeg har fået fat i en DLL, som indeholder nogle procedure jeg mener, jeg
:> burde kunne kalde.
:>
:> Jeg har en beskrivelse af dem.
:> Jeg kan også deklarere nogen af dem !
:> Det gør jeg således:
:>
:> Function OpenPort(Port : String) : Byte; stdcall; external 'd:\EZTTNT.DLL'
:> name 'openport';
:>
:>
:> Den virker.
:>
:> Så er der andre beskrevet, som programmet (udviklet i D5) fortæller under
:> opstart, at den ikke kan finde.
:>
:> Er der nogen mulighed for, at se, hvilke procedure / funktioner der er i
:> sådan en DLL fil ?
:>
:> Michael
:>
:>
:>
:
Nej, den viser kun de exporterede funktioner.
I nogen dll'er ingenting... tror det er i C/C++ dll'er...?
| |
Uffe Kousgaard (15-06-2001)
| Kommentar Fra : Uffe Kousgaard |
Dato : 15-06-01 22:53 |
|
> Nej, den viser kun de exporterede funktioner.
> I nogen dll'er ingenting... tror det er i C/C++ dll'er...?
En DLL med et COM interface behøver ikke at eksportere nogen funktioner, så
det kunne være forklaringen, men næppe at det har noget med C/C++ at gøre.
| |
|
|