mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-23 06:32:54 +02:00
82 lines
1.9 KiB
ObjectPascal
82 lines
1.9 KiB
ObjectPascal
{
|
|
$Id$
|
|
|
|
**********************************************************************}
|
|
|
|
{$MODE OBJFPC}
|
|
|
|
unit DLLFuncs;
|
|
|
|
interface
|
|
|
|
uses SysUtils;
|
|
|
|
function LoadLibrary(Name: PChar): PtrInt;
|
|
function GetProcAddress(Lib: PtrInt; ProcName: PChar): Pointer;
|
|
function FreeLibrary(Lib: PtrInt): Boolean;
|
|
function getlastdlerror: pchar;
|
|
|
|
|
|
implementation
|
|
|
|
const
|
|
RTLD_LAZY = $001;
|
|
RTLD_NOW = $002;
|
|
RTLD_BINDING_MASK = $003;
|
|
|
|
{$ifdef Linux}
|
|
function dlopen(Name: PChar; Flags: LongInt) : Pointer; cdecl; external 'dl';
|
|
function dlsym(Lib: Pointer; Name: PChar) : Pointer; cdecl; external 'dl';
|
|
function dlclose(Lib: Pointer): LongInt; cdecl; external 'dl';
|
|
function dlerror: pchar; cdecl; external 'dl';
|
|
{$else}
|
|
function dlopen(Name: PChar; Flags: LongInt) : Pointer; cdecl; external 'c';
|
|
function dlsym(Lib: Pointer; Name: PChar) : Pointer; cdecl; external 'c';
|
|
function dlclose(Lib: Pointer): LongInt; cdecl; external 'c';
|
|
function dlerror: pchar; cdecl; external 'c';
|
|
{$endif}
|
|
|
|
function getlastdlerror: pchar;
|
|
begin
|
|
getlastdlerror := dlerror;
|
|
end;
|
|
|
|
function LoadLibrary(Name: PChar): PtrInt;
|
|
begin
|
|
Result := PtrInt(dlopen(Name, RTLD_LAZY));
|
|
end;
|
|
|
|
function GetProcAddress(Lib: PtrInt; ProcName: PChar): Pointer;
|
|
begin
|
|
Result := dlsym(Pointer(Lib), ProcName);
|
|
end;
|
|
|
|
function FreeLibrary(Lib: PtrInt): Boolean;
|
|
begin
|
|
if Lib = 0 then
|
|
Result := False
|
|
else
|
|
Result := dlClose(Pointer(Lib)) = 0;
|
|
end;
|
|
|
|
end.
|
|
|
|
|
|
{
|
|
$Log$
|
|
Revision 1.4 2004-12-15 21:17:46 peter
|
|
* thandle -> ptrint
|
|
|
|
Revision 1.3 2004/11/24 20:04:09 jonas
|
|
+ basic Mac OS X support, only bounce works for now though
|
|
|
|
Revision 1.2 2003/08/25 18:16:38 marco
|
|
* BSD fix
|
|
|
|
Revision 1.1 2002/10/13 13:57:30 sg
|
|
* Finally, the new units are available: Match the C headers more closely;
|
|
support for OpenGL extensions, and much more. Based on the Delphi units
|
|
by Tom Nuydens of delphi3d.net
|
|
|
|
}
|