export bibliotek DLL

0

Mam w bibliotece następującą klasę:

type TZamknij = class
private
function dajUprawnienia: boolean;
public
procedure wylaczZasilanie(wymus: boolean);
procedure wylaczSystem(wymus: boolean);
procedure uruchomPonownie(wymus: boolean);
procedure wyloguj(wymus: boolean);
end;

Czy ktoś może mi powiedzieć co muszę zrobić żeby ją całą wyeksportować? Albo chociaż pojedynczo procedure, po procedurze (nie wiem co wpisać po exports - TZamknij nie moge, TZamknij.wyloguj też nie:()
Jest to moja pierwsza biblioteka wiec mam pewne luki w wykształceniu:)

0

http://4programmers.net/view.html?id=30 << tutaj masz trochę informacji.

0

to już czytałem, tylko tam nie jest napisane jak eksportować całe klasy (asni czy <ort>w ogóle</ort> się da). Jak w Delphim napiszę
[code]exports
TZamknij;[/code]
To powie że "TZamknij nie może być eksportowane", a jak wpiszę Zamknij.wyloguj to jest napisane że Undeclared identifier czy jakoś tak...

0
library ExTest;

uses
  {...};

type

type TZamknij = class(TObject)
  private
    function dajUprawnienia: boolean;
  public
    procedure wylaczZasilanie(wymus: boolean);
    procedure wylaczSystem(wymus: boolean);
    procedure uruchomPonownie(wymus: boolean);
    procedure wyloguj(wymus: boolean);
end;

CObject = class of TObject;

function GetClass: CObject;
begin
  Result:=TZamknij;
end;


exports
  GetClass;

begin
end.

//------------------------------
//program:

{...}
type
  CObject = class of TObject;
{...}

var
  HLib: THandle;
  ExportedClass: TObject;
  GetClass: function: CObject;
begin
  HLib:=LoadLIbrary('ExTest.dll');
  @GetClass:=GetProcAddress(HLib,'GetClass');

  ExportedClasss:=GetClass;
  {...}
  FreeLibrary(HLib);
end;

Do komunikacji z obiektem eksportowanej klasy radzę użyć interface'ow (jest gdzieś artykuł, help też dużo powie).

0

var
HLib: THandle;
ExportedClass: TObject;
GetClass: function: CObject;
begin
HLib:=LoadLIbrary('ExTest.dll');
@GetClass:=GetProcAddress(HLib,'GetClass');

ExportedClasss:=GetClass;

W tej linii kompilator informuje mnie o "incompatible types: TObject and CObject" Dlaczego?

i jeszcze jedno. jeśli już załaduję klasę do zmiennej to jak wywołacjakąś jej procedurę (domyślam się że Delphi nie zezwoli na normalne Klasa.procedura, tylko powie że Undeclared Identifier, ale to tylko moje przypuszczenia:)

0

ups, ExportedClass ma być typu CObject....

Później (w tej procedurze) wywołujesz np. Cośtam:=ExportedClass.Create;

Przy czym musisz tutaj zastosować interfejsy żeby wywoływać odpowiednie metody, których nie ma TObject........

0

wybaczcie że jestem taki upierdliwy ale programuję od dość niedawna (jakieś 5 miesięcy). Mam już załadowaną zmienną "ExportedClass"
Co teraz muszę zrobić żeby wywołać np. procedurę UruchomPonownie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1