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

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
Seenkao
энтузиаст
Сообщения: 578
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

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

Сообщение 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;

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

В чём собственно разница как я буду их загружать?
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

1 - статический, адреса функций импортируются из libGL системой автоматически при запуске программы. при отсутствии libGL программа не запускается
2 - динамический, ты сам решаешь что откуда брать, сам разруливаешь наличие\отсутствие нужных библиотек. Пример - https://gitlab.com/freepascal.org/fpc/s ... /src/gl.pp
Seenkao
энтузиаст
Сообщения: 578
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

получается в одном случае без разницы. Но если мне нужно будет проверять загружаются ли эти процедуры/функции, то лучше использовать их динамическую загрузку?!
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Если твоя программа что-то должна работать в случае осутствия либ - динамически.
Статически только для тех либ что гарантировано есть в системе.
Seenkao
энтузиаст
Сообщения: 578
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

Статически загруженные библиотеки занимают меньше места. Соответственно размер программы меньше (для большинства не критично).
Ответить