Вариант 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.






 Повторюсь, почему-то не загружается именно написанная мною библиотека (например libxml2.so загружается). Собранную библиотеку я помещаю в /usr/local/lib и запускаю ldconfig -R.
 Повторюсь, почему-то не загружается именно написанная мною библиотека (например libxml2.so загружается). Собранную библиотеку я помещаю в /usr/local/lib и запускаю ldconfig -R.