The OpenNET Project / Index page

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

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

"Работа с плагинами"  
Сообщение от Fagot email on 09-Окт-06, 22:41 
Здравствуйте!
Есть программка, она грузит плагин. (dlopen)
Можно ли сделать так, чтобы плагин запускал функцию из основной программы?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Работа с плагинами"  
Сообщение от horsh (??) on 10-Окт-06, 02:22 
>Здравствуйте!
>Есть программка, она грузит плагин. (dlopen)
>Можно ли сделать так, чтобы плагин запускал функцию из основной программы?

Например так:

$cat t.c
#include <dlfcn.h>
#include <link.h>

void bar(void)
{
        printf(".so could call the main binary\n");
}

void
main(void)
{
        void      *handle;
        void        (*fptr)(void);

        handle = dlopen("./library.so", RTLD_LAZY);
        fptr = (void (*)(void))dlsym(handle, "foo");
        (*fptr)();
}


$cat library.c
#include <dlfcn.h>
#include <link.h>

void
foo(void)
{
        void      *handle;
        void        (*fptr)(void);

        handle = dlopen((char*)0, RTLD_LAZY);
        fptr = (void (*)(void))dlsym(handle, "bar");
        (*fptr)();
}

а вот абзац из описания dlopen()

     If the value of pathname is 0, dlopen() provides a handle on
     a  global  symbol object. This object provides access to the
     symbols from an ordered set of  objects  consisting  of  the
     original  program image file, together with any dependencies
     loaded at program startup, and any objects that were  loaded
     using  dlopen()  together  with the RTLD_GLOBAL flag. As the
     latter set of objects can change during  process  execution,
     the set identified by handle can also change dynamically.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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