Вариант 1 (работает)
- Код: Выделить всё
program PBS;
uses PBSShare, PBSLog, crt;
procedure ConnectionManagerMain;external 'ConnectionHandler';
begin
SysMessage('Загружаем менеджер соедеинений');
ConnectionManagerMain;
repeat
delay(500);
until KeyPressed;
end.
Варинат 2 (не работает)
- Код: Выделить всё
program PBS;
uses PBSShare, PBSLog, crt, dynlibs;
type
TProc=procedure;
PProc=^TProc;
var
CHLib:TlibHandle;
ConnectionManagerMain:TProc;
begin
SysMessage('Загружаем менеджер соедеинений');
CHLib:=LoadLibrary('libConnectionHandler.so');
if CHLib=NILHandle then
begin
SysMessage('Не могу загрузить менеджер соединений');
Halt(1);
end;
ConnectionManagerMain:=PProc(GetProcAddress(CHLib, 'ConnectionManagerMain'))^;
ConnectionManagerMain;
repeat
delay(500);
until KeyPressed;
UnloadLibrary(CHLib);
end.
Функция LoadLibrary возвращает NIL. Смущяет меня тот факт, чтоесли указать какуюнибудь из не моих библиотека (например libxml2.so), то она загружается!!!!
Кратко сама библиотека:
- Код: Выделить всё
{$SMARTLINK OFF}
library ConnectionHandler;
uses sockets, baseunix, crt, PBSLog, PBSShare;
... здесь всякие другие функции и тп
{------------------------------------------------------------}
procedure ConnectionManagerMain;
...
begin
...
end;
exports ConnectionManagerMain;
end.