The OpenNET Project / Index page

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

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

"Аналог DLL в Unix"  
Сообщение от Flex25 (ok) on 25-Дек-06, 11:44 
1. Мне нужно содать что-то вроде DLL - скомпилированный файл, который хранит набор функций. Моя программа на C++ должна во время выполнения подключаться к этому файлу и запускать ее функции. Пожскажите в каком направлении копать?

2. Так же хотел бы узнать: можно ли в эти DLL записывать не просто функции, а целые объекты со своими свойствами и методами?

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

 Оглавление

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


1. "Аналог DLL в Unix"  
Сообщение от GrimObserver email(ok) on 25-Дек-06, 12:29 
man 3 dlopen
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Аналог DLL в Unix"  
Сообщение от sandy email(??) on 26-Дек-06, 14:00 
Допустим есть заголовочник myfunc, где функции объявлены, и myfunc.cc, где написаны тела функций

Компилируем:
# g++ -c -fPIC -o myfunc.o myfunc.cc
# g++ -c -shared -o mufinc.so myfunc.o

Вроде бы так. Это под FreeBSD
Если это на C++, не забудь про extern "C"


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

4. "Аналог DLL в Unix"  
Сообщение от sandy email(??) on 26-Дек-06, 14:11 
>2. Так же хотел бы узнать: можно ли в эти DLL записывать
>не просто функции, а целые объекты со своими свойствами и методами?
>

Это цитата, но не помню откуда, вроде бы с этого же форума:

---lib.h---
class foo {
public :
    foo();
    virtual ~foo();
};

extern "C" {
class foo *create_foo();
void delete_foo(class foo *);
};
---lib.h---

---lib.cc---
#include "lib.h"

class foo * create_foo() {
    return new foo();
}

void delete_foo(class foo *foo_) {
    delete foo_;
}
---lib.cc---

из своего приложения импортируете create_foo/delete_foo и через них
создаете/удаляете экземпляры класса. за счет того, что функции доступа
объявлены как "C", проблем с декарацией имен уже не будет.
надеюсь, идея понятна.

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

3. "Аналог DLL в Unix"  
Сообщение от sandy email(??) on 26-Дек-06, 14:03 
>1. Мне нужно содать что-то вроде DLL - скомпилированный файл, который хранит
>набор функций. Моя программа на C++ должна во время выполнения подключаться
>к этому файлу и запускать ее функции. Пожскажите в каком направлении
>копать?

Допустим есть заголовочник myfunc, где функции объявлены, и myfunc.cc, где написаны тела функций

Компилируем:
# g++ -c -fPIC -o myfunc.o myfunc.cc
# g++ -c -shared -o mufinc.so myfunc.o

Вроде бы так. Это под FreeBSD
Если это на C++, не забудь про extern "C"

>2. Так же хотел бы узнать: можно ли в эти DLL записывать
>не просто функции, а целые объекты со своими свойствами и методами?
>

Это цитата, но не помню откуда, вроде бы с этого же форума:

---lib.h---
class foo {
public :
    foo();
    virtual ~foo();
};

extern "C" {
class foo *create_foo();
void delete_foo(class foo *);
};
---lib.h---

---lib.cc---
#include "lib.h"

class foo * create_foo() {
    return new foo();
}

void delete_foo(class foo *foo_) {
    delete foo_;
}
---lib.cc---

из своего приложения импортируете create_foo/delete_foo и через них
создаете/удаляете экземпляры класса. за счет того, что функции доступа
объявлены как "C", проблем с декарацией имен уже не будет.
надеюсь, идея понятна.

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

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

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




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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