Загрузка библиотеки динамически в Linux или OSX?
Я знаю, что в Windows вы бы сделали что-то вроде LoadLibrary, а затем установите указатель на функцию с помощью GetProcAddress,
Но как можно было бы сделать подобное в Linux или OSX? Причина в том, что я хочу разработать подключаемую систему для своего приложения X-платформы.
Спасибо
Ответы
Ответ 1
Вы можете использовать dlopen
и друзей как на Linux, так и на Mac OS X (эта страница руководства для Mac должна работать для обоих). Обратите внимание, однако, что вам нужно быть осторожным, чтобы не смешивать 32-битный и 64-битный код и библиотеки; на Mac, просто убедитесь, что библиотеки являются "универсальными двоичными файлами".
Ответ 2
Вы ищете dlopen
(аналогично LoadLibrary), dlclose
(аналогично FreeLibrary) и dlsym
(аналогично GetProcAddress).
Ответ 3
В Linux вы используете dlopen() (открытая библиотека), dlsym() (обычно смотрите символ (= функция или значение)) и друзей: http://linux.die.net/man/3/dlopen
Я слышал, что он работает одинаково в OS X, но у меня нет опыта с этим.
Ответ 4
Эквиваленты POSIX dlopen
и dlsym
. Я знаю, что у них есть Linux, и я был бы удивлен, если OS X этого не сделает.