Страница 1 из 1

Загрузка процедур, функций.

СообщениеДобавлено: 15.12.2021 20:50:07
Seenkao
Есть различные способы объявления вызываемых процедур и функций. Например, такой:
Код: Выделить всё
function  glXCreateContext(dpy: PDisplay; vis: PXVisualInfo; shareList: GLXContext; direct: Boolean): GLXContext; cdecl; external libGL;

такой:
Код: Выделить всё
var
  glXCreatePbuffer: function(dpy: PDisplay; config: Integer; attribList: PInteger): GLXPBuffer; cdecl;

или вообще такой (а может быть ещё более замороченный):
Код: Выделить всё
const
  TglXCreatePbuffer: function(dpy: PDisplay; config: Integer; attribList: PInteger): GLXPBuffer; cdecl;
var
  glXCreatePbuffer: TglXCreatePbuffer;
// или в каком-нибудь таком варианте
  glXCreatePbuffer: function;

В первом случае, нам ни чего делать не надо, в двух других зачастую надо загружать адреса этих процедур и функций.

В чём собственно разница как я буду их загружать?

Re: Загрузка процедур, функций.

СообщениеДобавлено: 15.12.2021 20:58:28
zub
1 - статический, адреса функций импортируются из libGL системой автоматически при запуске программы. при отсутствии libGL программа не запускается
2 - динамический, ты сам решаешь что откуда брать, сам разруливаешь наличие\отсутствие нужных библиотек. Пример - https://gitlab.com/freepascal.org/fpc/s ... /src/gl.pp

Re: Загрузка процедур, функций.

СообщениеДобавлено: 15.12.2021 22:23:52
Seenkao
получается в одном случае без разницы. Но если мне нужно будет проверять загружаются ли эти процедуры/функции, то лучше использовать их динамическую загрузку?!

Re: Загрузка процедур, функций.

СообщениеДобавлено: 15.12.2021 22:33:17
zub
Если твоя программа что-то должна работать в случае осутствия либ - динамически.
Статически только для тех либ что гарантировано есть в системе.

Re: Загрузка процедур, функций.

СообщениеДобавлено: 17.02.2022 00:12:04
Seenkao
Статически загруженные библиотеки занимают меньше места. Соответственно размер программы меньше (для большинства не критично).