The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"данные вызывающей программы при использовании dlopen"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"данные вызывающей программы при использовании dlopen"
Сообщение от Art emailИскать по авторуВ закладки on 26-Июл-02, 21:32  (MSK)
если я загружаю модуль с помощью dlopen
и вызываю его функцию
можно ли из этой функции добраться до данных родительского процесса?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: данные вызывающей программы при использовании dlopen"
Сообщение от Арлекин emailИскать по авторуВ закладки on 28-Июл-02, 09:38  (MSK)
Эта функция вызывается в адресном пространстве РОДИТЕЛЬСКОГО процесса. Иначе говоря getpid() до ее вызова и внутри новой функции должны иметь одинаковое значение. Должны также работать все соглашения С/++ для вызова extern-объявленных функций.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: данные вызывающей программы при использовании dlopen"
Сообщение от Art emailИскать по авторуВ закладки on 28-Июл-02, 13:59  (MSK)
>Эта функция вызывается в адресном пространстве РОДИТЕЛЬСКОГО процесса. Иначе говоря getpid() до
>ее вызова и внутри новой функции должны иметь одинаковое значение. Должны
>также работать все соглашения С/++ для вызова extern-объявленных функций.

это я понимаю что должны
но как мне так модуль сделать что бы все символы разресолвились?
в mod.c объявляю extern int b;
int b; в main.c объявлено
делаю:
gcc -o main main.c
gcc -nostartfiles -shared -o mod.so mod.c

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: данные вызывающей программы при использовании dlopen"
Сообщение от Art emailИскать по авторуВ закладки on 28-Июл-02, 14:00  (MSK)
>Эта функция вызывается в адресном пространстве РОДИТЕЛЬСКОГО процесса. Иначе говоря getpid() до
>ее вызова и внутри новой функции должны иметь одинаковое значение. Должны
>также работать все соглашения С/++ для вызова extern-объявленных функций.

это я понимаю что должны
но как мне так модуль сделать что бы все символы разресолвились?
в mod.c объявляю extern int b;
int b; в main.c объявлено
делаю:
gcc -o main main.c
gcc -nostartfiles -shared -o mod.so mod.c
и получается при dlopen Error: mod.so: Undefined symbol "b"

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: данные вызывающей программы при использовании dlopen"
Сообщение от Арлекин emailИскать по авторуВ закладки on 28-Июл-02, 14:25  (MSK)
Надо описать int "выше" всех остальных функций, но в области их видимости. Хотя я уже лет пять не пользуюсь extern'ами - после ++ геморно это, да и плохо, когда что-то доступно всем. Описываем структуру/класс с нужными данными и передаем указатель на ее, уже инициализированный, экземпляр, как параметр вызова функции. Задача остается только не прибить ее (не освободить память под ней) внутри вызванной функции.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: данные вызывающей программы при использовании dlopen"
Сообщение от Art emailИскать по авторуВ закладки on 28-Июл-02, 14:40  (MSK)
Ну ясное дело что я в самом начале описываю переменные :)
ошибку то мне не компилятор выдаёт а вызов dlopen самого
Не догоняю я как тут разресолвить символы внешние..
то что ссылку просто передавать можно это ясно всё, так и собирался делать
но для меня удобнее было бы через extern сделать
а то так устанеш ссылки на функции из main засылать в модуль, так как мне надо что бы модуль из мэйна функции юзал :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: данные вызывающей программы при использовании dlopen"
Сообщение от Art emailИскать по авторуВ закладки on 28-Июл-02, 15:32  (MSK)
ключ -export-dynamic помог dlopen разресолвить всё %)
пасиба :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру