LINUX.ORG.RU

Указатель на структуру в объектном файле


0

0

Есть некоторая библиотека, скажем, libmyfunc.so. В этой библиотеке есть глобальная структура с указателями на функции внутри библиотеки. Подскажите, как можно обратиться к этой структуре (получить указатель на структуру) из исполняемой программы?

anonymous

Ответ на: комментарий от Reset

еще можно объявить структуру extern'ом в каком-либо h'нике, скомпилировать слинковать с libmylib.so

Reset ★★★★★
()
Ответ на: комментарий от Reset

В принципе, я склонялся именно к такому решению, сделать функцию в библиотеке, которая возвращала бы указатель на структуру. Но стало интересно, а как же ядро подгружает свои модули, ведь в модулях ядра тоже есть структура Fops, и ядро как-то обращается к этой структуре. Вот и подумал, что есть возможность реализовать подобный подход в прикладной программе.

anonymous
()
Ответ на: комментарий от anonymous

ну во-первых в ядре большинство структур регистрируются самими модулями, во вторых тебе никто не мешает сделать extern struct foo *ptr, где ptr - название символа указателя на структуру.

anonymous
()

libmyfunc.h:
typedef struct {
...
} struct_t;

libmyfunc.c:
#include "libmyfunc.h"
struct_t struct_name = {
...
};

program.c:
#include "libmyfunc.h"
struct_t *sptr = dlsym(handle, "struct_name");

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