- RE: данные вызывающей программы при использовании dlopen, Арлекин, 09:38 , 28-Июл-02 (1)
Эта функция вызывается в адресном пространстве РОДИТЕЛЬСКОГО процесса. Иначе говоря getpid() до ее вызова и внутри новой функции должны иметь одинаковое значение. Должны также работать все соглашения С/++ для вызова extern-объявленных функций.
- RE: данные вызывающей программы при использовании dlopen, Art, 13:59 , 28-Июл-02 (2)
>Эта функция вызывается в адресном пространстве РОДИТЕЛЬСКОГО процесса. Иначе говоря getpid() до >ее вызова и внутри новой функции должны иметь одинаковое значение. Должны >также работать все соглашения С/++ для вызова extern-объявленных функций. это я понимаю что должны но как мне так модуль сделать что бы все символы разресолвились? в mod.c объявляю extern int b; int b; в main.c объявлено делаю: gcc -o main main.c gcc -nostartfiles -shared -o mod.so mod.c - RE: данные вызывающей программы при использовании dlopen, Art, 14:00 , 28-Июл-02 (3)
>Эта функция вызывается в адресном пространстве РОДИТЕЛЬСКОГО процесса. Иначе говоря 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"
- RE: данные вызывающей программы при использовании dlopen, Арлекин, 14:25 , 28-Июл-02 (4)
Надо описать int "выше" всех остальных функций, но в области их видимости. Хотя я уже лет пять не пользуюсь extern'ами - после ++ геморно это, да и плохо, когда что-то доступно всем. Описываем структуру/класс с нужными данными и передаем указатель на ее, уже инициализированный, экземпляр, как параметр вызова функции. Задача остается только не прибить ее (не освободить память под ней) внутри вызванной функции.
- RE: данные вызывающей программы при использовании dlopen, Art, 14:40 , 28-Июл-02 (5)
Ну ясное дело что я в самом начале описываю переменные :) ошибку то мне не компилятор выдаёт а вызов dlopen самого Не догоняю я как тут разресолвить символы внешние.. то что ссылку просто передавать можно это ясно всё, так и собирался делать но для меня удобнее было бы через extern сделать а то так устанеш ссылки на функции из main засылать в модуль, так как мне надо что бы модуль из мэйна функции юзал :)
- RE: данные вызывающей программы при использовании dlopen, Art, 15:32 , 28-Июл-02 (6)
ключ -export-dynamic помог dlopen разресолвить всё %) пасиба :)
|