Przykladowa klasa:
1. plik *.h biblioteki dll
- Kod: Zaznacz cały
class __declspec(dllexport) TKlasa
{
private:
public:
TKlasa();
~TKlasa();
AnsiString pokaz();
};
2. Plik *.cpp biblioteki dll
- Kod: Zaznacz cały
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#include "klasa.h"
#pragma hdrstop
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
TKlasa::TKlasa()
{
ShowMessage("Konstruktor klasy");
}
TKlasa::~TKlasa()
{
ShowMessage("Destruktor klasy");
}
AnsiString TKlasa::pokaz()
{
AnsiString napis;
napis = "Funkcja z klasy";
return napis;
}
Jak uzyskać dynamicznie dostęp do metod w/w klasy. Próbowałem czegoś takiego ale mi nic nie wychodziło:
- Kod: Zaznacz cały
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "klasa.h"
...
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE sciezka = LoadLibrary("klasa.dll");
if(sciezka!=NULL)
{
ShowMessage("Zaladowano bibliotekę dll");
typedef (*klasa1)(); // -> przypuszczam że w tym miejscu jest bład
klasa1 TKlasa;
TKlasa = (klasa1)GetProcAddress(sciezka,"_TKlasa");
}
else
{
ShowMessage("Nie załadowano biblioteki dll");
}
}
Proszę o jakieś wskazówki.