Delphi.cz

Český portál Delphi

Použití knihoven na Mac OS X

Už dříve jsem napsal článek o DLL a volacích konvencích a dnes to doplním o použití pro OS X. Většinu věcí použijete z minula, jen je tu takový drobný zádrhel.

Mějme v nějaké knihovně funkci např. InicializeSDK. Její deklaraci pro Windows určitě zvládnete, proto zároveň uvedu variantu pro OS X.

Základním kamenem úrazu je, že jména v knihovně začínají podtržítkem a druhým problémem je jiná volací konvence (viz uvedený článek) a třetím problémem je, že musíte najít knihovnu. V tom druhém Vám pomůže samotný OS X, resp. pokud program spustíte pod PA serverem (součást instalace Delphi - už jsem o tom zde psal: Deploy to OSX a pokračování) je v případě problému s knihovnou vypsána cesta kde je knihovna hledána.

Takže abych SDK udělal jednoduše multiplatformní napsal jsem něco takového (inspirace v RTL a troška zkoušení):

const
{$IFNDEF MACOS}
  xsdk = 'XSDK.DLL';
  _PU = '';
{$ELSE}
  _PU = '_';
  xsdk = '/Applications/Contents/XSDK';
{$ENDIF}


function InitializeSDK( ) : Integer ; {$IFDEF MACOS}cdecl;{$ELSE}stdcall;{$ENDIF}
  external xsdk name _PU + 'InitializeSDK';

Tedy v jednom kódu jsem podchytil změnu s podtržítkem (PU), volací konvenci a informaci o knihovně. Berte to jako takový výkop, určitě to napíšete pěkněji. Jen pro úplnost: toto budete potřebovat jen ve speciálních případech. Většina volání knihoven je součástí RTL v MacAPI.*, např. MacApi.CoreFoundation.

Datum: 2012-05-21 23:18:00 Tagy: OSX, DLL

Návody