LINUX.ORG.RU

Динамическая компоновка


0

0

Есть возможность изобразить что-то вроде LoadLibrary из Windows под Linux? Ситуация такая: портируется проект из виндом. у него есть EXE и несколько DLL, в которых лежат функции с ОДИНАКОВЫМИ именами и декларациами, и, в зависимости от того что нужно, грузит нужную DLL, а дальше вызывает функции не задумываясь о том, какая это DLL (ну, на самом деле это по COM работает, но его привести к описанной выше схеме - не проблема) Как это сделать в Linux?

anonymous

Как уже упоминалось немножко раньше - man dlopen

Akan
()

да блин у меня например на man dlopen выдает 'no manua; entry for dlopen'! где его взять-то?!!!!!

stormbringer
()

А может у тебя не полный дистрибутив стоИт? У меня стоИт RedHat 6.2 полная установка с первого CD (их всего была парочка - первый со всеми бинарниками, второй - с исходниками). Занимает такая установка порядка 1.2Gb, но зато есть все. Во время установки операционки (во всяком случае RedHat) тебе предоставляется возможность дополнительно установить Kernel Development и Clusters Development - это набор библиотек, для использования дополнительных возможностей программирования. Так вот, может быть, что dlopen сидит в одной из библиотек Kernel Development и, если оно у тебя не стоИт то нет ни манула ни бинарников для линковки кода. Попробуй порыться в пакетах на CD, может чего-нибудь найдешь, а если нет - переустанови Линух, таеим образом, чтобы он тебе поставил все пакеты. Удачи.

Akan
()

dlopen находится в libdl, которая вместе libpthread, libcrypt и т.п. входит в glibc. Пакеты *-devel обычно содержат только заголовки (если конечно статических либ не предусмотрено в пакете), т.к. бинарники для линковки кода во время сборки используются те-же, что и при запуске.
$ rpm -qf /lib/libdl.so.2
glibc-2.1.3-15
$ rpm -qf /lib/libdl.so.1.9.5
ld.so-1.9.5-13
$ rpm -qf /usr/man/man3/dlopen.3.gz
ld.so-1.9.5-13
У меня стоит redhat 6.2. В общем если у тебя redhat, то man по dlopen у тебя стоит, иначе система была бы нерабочая. Может что нибудь с MANPATH ?

timur
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.