Es gibt mehrere Möglichkeiten:
- *.lib der DLL einbinden (einfachster Fall):
- Den BCB Menüpunkt ‚Projekt->Dem Projekt hinzufügen …‘ wählen und die zur DLL zugehörige DLL-Libary (*.lib) ins Projekt einbinden
- falls keine *.lib existiert müssen die DLL-Funktionen mehr oder weniger mit Hand exportiert werden
- falls ein Header-File existiert in dem die Export-Funktionen definiert sind, die *.h mit #include „dllheadername.h“ in die entsprechende *.cpp includieren
- Beispiel für eine solche Headerdatei (dllheader.h):
- existiert kein Header-File, so wurden häufig vom DLL-Programmierer die Export-Funktionen schon fertig in der DLL-cpp festgelegt, wie in folgendem Quellcode demonstriert:
- Diese vorher definierten Funktionen müssen dann entprechend in der *.cpp der Programmes, das die DLL-Funktionen nutzen soll, importiert werden:
- Aufruf der exportierten DLL-Funktionen im Anwendungs-Quellcode:
#ifndef dllheaderH #define dllheaderH extern "C" __declspec(dllexport) int Funktion1(int *); extern "C" __declspec(dllexport) bool Funktion2(float *, int *); extern "C" __declspec(dllexport) DWORD Funktion3(float *,BYTE *); #endif
//--------------------------------------------------------------------------- // fiktiver Quellcode der DLL //--------------------------------------------------------------------------- #include <vcl.h> #include <stdio.h> #include <windows.h> #pragma hdrstop //--------------------------------------------------------------------------- extern "C" __declspec(dllexport) int Funktion1(int *); extern "C" __declspec(dllexport) bool Funktion2(float *, int *); extern "C" __declspec(dllexport) DWORD Funktion3(float *,BYTE *); #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } //--------------------------------------------------------------------------- . . .
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //Funktionen, die aus der DLL importiert werden extern "C" __declspec(dllimport) int Funktion1(int *); extern "C" __declspec(dllimport) bool Funktion2(float *, int *); extern "C" __declspec(dllimport) DWORD Funktion3(float *,BYTE *); //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } . . .
. . . void __fastcall TForm1::Button1Click(TObject *Sender) { int Wert1; DWORD Wert2; Wert1=Funktion1(10); if (Funktion2(4.5, 12)) ShowMessage("Test"); Wert2=Funktion3(1.5, 0); } . . .