|
| Hvordan kalder man en funktion i en DLL? (~ Fra : Jens Rauff |
Dato : 25-06-02 08:56 |
|
Hej...
Jeg har brug for at kalde en funktion i en DLL. Jeg har beskrivelse af
funktionsprototyperne i DLL'en. Det jeg mangler er at gøre min kode
opmærksom på, at den specifikke DLL skal bruges og derefter kalde en
funktion i DLL'en. Hvordan gøres det?
Mvh. Jens Rauff
| |
Jonas Meyer Rasmusse~ (25-06-2002)
| Kommentar Fra : Jonas Meyer Rasmusse~ |
Dato : 25-06-02 10:41 |
|
Hej.
Prøv med noget i denne her retning:
typedef void (*dll_funktion)();
dll_funktion min_funktion;
HINSTANCE dll = LoadLibrary( "min.dll" );
if( dll )
{
min_funktion = reinterpret_cast< dll_funktion >( GetProcAddress( dll,
"minfunktion" ) );
if( min_funktion )
{
min_funktion(); //kald funktionen
}
//frigør
FreeLibrary( dll );
}
(ikke kompileret kode!)
mvh Jonas
"Jens Rauff" <e01jensra@student.hih.dk> wrote in message
news:3d182217$0$58399$edfadb0f@dspool01.news.tele.dk...
> Hej...
>
> Jeg har brug for at kalde en funktion i en DLL. Jeg har beskrivelse af
> funktionsprototyperne i DLL'en. Det jeg mangler er at gøre min kode
> opmærksom på, at den specifikke DLL skal bruges og derefter kalde en
> funktion i DLL'en. Hvordan gøres det?
>
> Mvh. Jens Rauff
>
>
| |
Mogens Hansen (25-06-2002)
| Kommentar Fra : Mogens Hansen |
Dato : 25-06-02 10:58 |
|
"Jens Rauff" <e01jensra@student.hih.dk> wrote
> Jeg har brug for at kalde en funktion i en DLL. Jeg har beskrivelse af
> funktionsprototyperne i DLL'en. Det jeg mangler er at gøre min kode
> opmærksom på, at den specifikke DLL skal bruges og derefter kalde en
> funktion i DLL'en. Hvordan gøres det?
Den nemmeste måde er at bruge funktionerne via et import library, hvorved
det er som at bruge alle andre funktioner.
1. Inkluder funktionsprototyperne - helt almindeligt
Vær opmærksom på om DLL'et er eksporterer C eller C++ funktioner.
Hvis man blander det sammen, og ikke binder det rigtigt sammen, får man
som minimum "unresolved ..." fra linkeren - men det er ikke DLL specifikt.
Hvis det er C++ funktioner, så vær opmærksom på om DLL'et er oversat med
samme compiler, som du bruger
2. Kald funktionerne - helt almindeligt
3. Link import librariet med.
Det hedder typisk det samme som DLL'et, blot med LIB som extension
Hvis det ikke findes, har din compiler sikkert mulighed for at generere
det på basis af DLL'et.
4. Kør programmet (sørg for at DLL'et kan findes)
Venlig hilsen
Mogens Hansen
| |
Jens Rauff (25-06-2002)
| Kommentar Fra : Jens Rauff |
Dato : 25-06-02 12:00 |
|
Tak for svarene. Nu har jeg noget at arbejde med. Der går dog nok lige lidt
tid med det, da jeg ikke er så stiv i windowsprogrammering.
Mvh Jens
"Mogens Hansen" <mogens_h@dk-online.dk> wrote in message
news:af9ekf$13sk$1@news.cybercity.dk...
>
> "Jens Rauff" <e01jensra@student.hih.dk> wrote
>
> > Jeg har brug for at kalde en funktion i en DLL. Jeg har beskrivelse af
> > funktionsprototyperne i DLL'en. Det jeg mangler er at gøre min kode
> > opmærksom på, at den specifikke DLL skal bruges og derefter kalde en
> > funktion i DLL'en. Hvordan gøres det?
>
> Den nemmeste måde er at bruge funktionerne via et import library, hvorved
> det er som at bruge alle andre funktioner.
> 1. Inkluder funktionsprototyperne - helt almindeligt
> Vær opmærksom på om DLL'et er eksporterer C eller C++ funktioner.
> Hvis man blander det sammen, og ikke binder det rigtigt sammen, får
man
> som minimum "unresolved ..." fra linkeren - men det er ikke DLL specifikt.
> Hvis det er C++ funktioner, så vær opmærksom på om DLL'et er oversat
med
> samme compiler, som du bruger
> 2. Kald funktionerne - helt almindeligt
> 3. Link import librariet med.
> Det hedder typisk det samme som DLL'et, blot med LIB som extension
> Hvis det ikke findes, har din compiler sikkert mulighed for at
generere
> det på basis af DLL'et.
> 4. Kør programmet (sørg for at DLL'et kan findes)
>
> Venlig hilsen
>
> Mogens Hansen
>
>
| |
Povl H. Pedersen (25-06-2002)
| Kommentar Fra : Povl H. Pedersen |
Dato : 25-06-02 22:32 |
|
In article <3d182217$0$58399$edfadb0f@dspool01.news.tele.dk>,
"Jens Rauff" <e01jensra@student.hih.dk> wrote:
> Hej...
>
> Jeg har brug for at kalde en funktion i en DLL. Jeg har beskrivelse af
> funktionsprototyperne i DLL'en. Det jeg mangler er at gøre min kode
> opmærksom på, at den specifikke DLL skal bruges og derefter kalde en
> funktion i DLL'en. Hvordan gøres det?
>
> Mvh. Jens Rauff
Du linker den bare ind.
e.g.
gcc hello.c -lmylib
så kan du bare kalde de funtioner der er i mylib.
Hvis det er et windows / WIN32 API spørgsmål, så er det en forkert
gruppe (?)
| |
Jonas Meyer Rasmusse~ (26-06-2002)
| Kommentar Fra : Jonas Meyer Rasmusse~ |
Dato : 26-06-02 07:39 |
|
"Povl H. Pedersen" <nospam@home.terminal.dk> writes:
[snip]
> gcc hello.c -lmylib
[snip]
> Hvis det er et windows / WIN32 API spørgsmål, så er det en forkert
> gruppe (?)
Sikke noget vås. Du benytter selv en specifik oversætter i dit eksempel,
hvad får dig til at tro at det er okay, når du siger det ikke er okay med
windows ting?
Eh, pointen er selvfølgelig at begge ting vel er okay.
Jonas Meyer Rasmussen
| |
Klaus Petersen (26-06-2002)
| Kommentar Fra : Klaus Petersen |
Dato : 26-06-02 12:34 |
|
> > Hvis det er et windows / WIN32 API spørgsmål, så er det en forkert
> > gruppe (?)
SVJKS. er der ikke andre danske grupper, der passer bedre på windows
specifike C/C++ spørgsmål.
| |
Jens Rauff (28-06-2002)
| Kommentar Fra : Jens Rauff |
Dato : 28-06-02 07:40 |
|
TAK for søl.
Jeg kan ikke finde andre nyhedsgrupper på den server, som jeg benytter, der
passer bedre. Sådan er det. Jeg synes, at det hele går lidt for meget op i
søl her i nyhedsgrupperne. Jeg siger tak for svarene til Jonas og Mogens.
Mvh Jens
"Klaus Petersen" <spektual@hotmail.com> wrote in message
news:afc8r4$25a$1@sunsite.dk...
> > > Hvis det er et windows / WIN32 API spørgsmål, så er det en forkert
> > > gruppe (?)
>
> SVJKS. er der ikke andre danske grupper, der passer bedre på windows
> specifike C/C++ spørgsmål.
>
>
| |
|
|