Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2010, 17:43   #1
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию вынос методов класса в дин библиотеки(dll)

в общем интересует, можно ли сделать так чтоб, код методов класса находился не в самом exe(в итоге) а во внешней библиотеке?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.12.2010, 18:25   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Классы не рекомендуется экспортировать из dll, т.к. это накладывает ограничения на использование этой самой dll. С другим языком она точно работать не будет, да и с другим компилятором С++ могут возникнуть проблемы.
Лучше сделать экспорт функций, как в WinAPI и других библиотеках, а уже внутри кода этих самых функций использовать во всю свои классы, заниматься всем распределением памяти,... тогда получится тру-либа и всё взлетит
pu4koff вне форума Ответить с цитированием
Старый 06.12.2010, 18:38   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну не совсем подходит.

мне важно чтоб в коде все прелести ООП остались, то есть в ДЛЛ может хоть процедурность быть, мне важно писать на ООП вне ДЛЛ(то есть используя её)

или нахимичить с классом(вне ДЛЛ) над указателем на класс(в ДЛЛ идет)?
Код:
class Object
{
private:
    void* obj;
public:
    Object()
    {
         obj=New_Object();
    };
    ~Object()
    {
        Delete_Object(obj);
    }
    void Do(int i)
    {
        Do_Object(obj,i);
    }
};
не глупо ли?(хотя вроде как чуть ли не единственный вариант, ну и реализацию прятать внутри статических)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.12.2010, 00:39   #4
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Почитай про COM, должно подойти тебе..

pu4koff, DirectX ведь работает..
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 07.12.2010, 01:30   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

там интерфейсы, просто я хотел сделать именно классы а не интерфейсы, видимо придется делать их всетаки.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.12.2010, 10:41   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от ISergeyN Посмотреть сообщение
Почитай про COM, должно подойти тебе..

pu4koff, DirectX ведь работает..
Охохох... старость - не радость... Совсем забыл про эту технологию
pu4koff вне форума Ответить с цитированием
Старый 07.12.2010, 15:31   #7
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

не подойдет написать класс, как обертку над ф-циями, реализованными в длл?
sashonk вне форума Ответить с цитированием
Старый 07.12.2010, 16:12   #8
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

sashonk, и как потом осуществить доступ к данным класса.. COM здесь идеальный вариант (или подобие его..)
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 07.12.2010, 20:55   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

sashonk, была такая идея, наверно на ней остановлюсь, ибо это даст мне большую гибкость.
хотя интерфейс тоже неплохо, но мне лично не хочется документировать наличие некоторых полей класса.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DLL библиотеки Михаил Юрьевич Общие вопросы Delphi 8 11.10.2010 20:55
Вынос компонентов программы (которые делфи всталяет в каждую программу) из проги в dll GanGSISoft Общие вопросы Delphi 17 02.07.2009 17:24
Использование методов вне класса prikolist Общие вопросы C/C++ 12 07.05.2009 13:57
Библиотеки Dll ivanesky Общие вопросы Delphi 9 10.03.2008 10:42
DLL библиотеки Altera Помощь студентам 2 06.02.2008 06:13