.dll includen met borland c++

Pagina: 1
Acties:

  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05-2025

irondog

alle dingen moeten onzin zijn

Topicstarter
Ik heb een .dll gecompiled en nu wil ik gebruik maken van de functies in deze library.
Kan iemand me vertellen hoe dit moet? Welke files moeten er allemaal in het project staan?

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

voor het gebruiken van een dll moet je van de functie die je wil gebruiken eerst een prototype declareren.
code:
1
__declspec(dllimport) return_type imported_function_name(parameters);

om de dll te laden gebruik je de functie LoadLibrary(), vervolgens kun je GetProcAddress() om de functie te vinden in de dll. Voorbeeldcode heb ik ff niet voor de hand, en het stappenplan komt uit de Help van C++Builder 5. Denk dat dit wel werkt.

Chris

www.fendt.com | Nikon D7100 | PS5


Verwijderd

De .lib file van je DLL toevoegen aan je project.
en natuurlijk de header file in je source code zetten.

  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05-2025

irondog

alle dingen moeten onzin zijn

Topicstarter
Bedankt, maar met deze tips ben ik niet veel verder gekomen.
Ik heb nog een aantal vragen.
Stel ik maak van zoiets een .dll:

#include <stdio.h>

void test(void)
{
printf("gelukt");
}

Ik neem aan dat mijn header er dan zo uit moet zien:
void test(void)

De compiler maakt dan voor mij een .dll en een .lib.
Maar Hoé moet ik nu de functie test() aaroepen in een ander project?

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05-2025

irondog

alle dingen moeten onzin zijn

Topicstarter
Op zaterdag 23 februari 2002 17:38 schreef FendtVario het volgende:
voor het gebruiken van een dll moet je van de functie die je wil gebruiken eerst een prototype declareren.
code:
1
__declspec(dllimport) return_type imported_function_name(parameters);

om de dll te laden gebruik je de functie LoadLibrary(), vervolgens kun je GetProcAddress() om de functie te vinden in de dll. Voorbeeldcode heb ik ff niet voor de hand, en het stappenplan komt uit de Help van C++Builder 5. Denk dat dit wel werkt.

Chris
Ik gebruik niet C++ builder, maar gewoon Borland c++. Die kent geen LoadLibrary(). Wie helpt me verder???

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


Verwijderd

Op zaterdag 23 februari 2002 19:11 schreef irondog het volgende:
Bedankt, maar met deze tips ben ik niet veel verder gekomen.
Ik heb nog een aantal vragen.
Stel ik maak van zoiets een .dll:

#include <stdio.h>

void test(void)
{
printf("gelukt");
}

Ik neem aan dat mijn header er dan zo uit moet zien:
void test(void)

De compiler maakt dan voor mij een .dll en een .lib.
Maar Hoé moet ik nu de functie test() aaroepen in een ander project?
Ander project aanmaken... header file includen die je in je DLL project hebt gebruikt.... bij compilen linken met de .lib file...

Verwijderd

Je functie is nu alleen bekend binnen de dll, je moet hem ook nog exporteren. Dit doe je door hem als volgt te declareren :

extern "C" void cdecl __export test(void);

Verwijderd

Op zaterdag 23 februari 2002 21:33 schreef irondog het volgende:
Ik gebruik niet C++ builder, maar gewoon Borland c++. Die kent geen LoadLibrary(). Wie helpt me verder???
En dan wil je Win32 DLL's aanroepen? Compileert Borland C++ wel naar Win32? Of bedoel je gewoon iets anders?

I.i.g. LoadLibrary() is een Windows API functie waarmee je een DLL kunt 'laden' en waarbij je een handle naar de betreffende library krijgt. Met GetProcAddress kun je een pointer naar een adres in deze library vinden.

Verwijderd

Op zaterdag 23 februari 2002 21:33 schreef irondog het volgende:
Ik gebruik niet C++ builder, maar gewoon Borland c++. Die kent geen LoadLibrary(). Wie helpt me verder???
#include <windows.h> al geprobeerd?

  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05-2025

irondog

alle dingen moeten onzin zijn

Topicstarter
Thnx voor de reacties. :) Ik ga het nu wel proberen met Borland c++ builder.
Het is me hierbij al gelukt om een .dll te maken en de geëxporteerde functies te gebruiken door de .lib aan het project toe te voegen. (dit lukt me trouwens niet bij borland c++).

Ik zal nu ff proberen om de loadlibrary() te gebruiken.

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


  • Killemov
  • Registratie: Januari 2000
  • Laatst online: 11-09 10:38

Killemov

Ik zoek nog een mooi icooi =)

De topictitel suggereert bij mij dat je een dll static wil linken.

Hey ... maar dan heb je ook wat!


  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05-2025

irondog

alle dingen moeten onzin zijn

Topicstarter
Op maandag 25 februari 2002 15:53 schreef Killemov het volgende:
De topictitel suggereert bij mij dat je een dll static wil linken.
Wat is het verschil tussen een static library en een dynamic library?
Op maandag 25 februari 2002 12:06 schreef hvdberg het volgende:

[..]

En dan wil je Win32 DLL's aanroepen? Compileert Borland C++ wel naar Win32? Of bedoel je gewoon iets anders?

I.i.g. LoadLibrary() is een Windows API functie waarmee je een DLL kunt 'laden' en waarbij je een handle naar de betreffende library krijgt. Met GetProcAddress kun je een pointer naar een adres in deze library vinden.
Hoe gebruik ik LoadLibrary(); De help van borland cpp builder zegt hier zeer weinig over. "GetProcAddress" ken hij zelfs niet eens.

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]

Pagina: 1