|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.08.2011, 00:45 | #1 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
организация библиотеки(внешние модули)
в общем пишу свою библиотечку и стараюсь по возможности делать её кроссплатформенной.
в общем как это есть сейчас(внутри ООП, но наружу вынесено через функции по методу чеширского кота): имеется лишь одна длл, с функциями. + проблем с наследованием нет + всего один файл - по мере дополнения библиотеки, длл растет(и соответственно будет занимать зря память при потреблении) появилась мысль сделать так: имеем длл с классами(классы экспортированы(точнее методы, но не суть) и открыты(не скрыты через кота)), они не для прямого использования. и длл интерфейс, она уже использует те длл с классами, и предоставляет простые функции(по принципу кота), интерфейс при необходимости подгружает(*) нужные длл-классы. + проблем так же не будет + экономится память процесса при неполной загрузке библиотеки - больше файлов и немного больше веса тут думаю придется делать экспорт и через функции(для динамической загрузки) и через методы(для наследования) кто что подскажет? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
21.08.2011, 00:59 | #2 | |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
Цитата:
Вроде 2Гб виртуального пространства под рукой. Это ж какой размер библиотеки должен быть? |
|
21.08.2011, 01:07 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
2ГБ, то это да, но кто знает нужды целевого приложения
да и даже, хрен с ней с памятью тогда уж(хотя и разрастаться зря тоже не хочется) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 21.08.2011 в 01:12. |
21.08.2011, 01:20 | #4 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
ты бы хоть сказал, как будет использоваться библиотека. плагином? подгрузкой в реалтайме? тогда тут только 1 правильный способ. или же связи разрешать будет линковщик?
пс. не называй пимпл чеширским котом. pimpl - pointer to implementation, все ясно и понятно. кстати, покажи как реализовал кросплатформенную работу с библиотеками, хочется посмотреть, так ли понял мою идею (а она красива)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
21.08.2011, 01:30 | #5 | |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
Цитата:
Код:
Код:
Последний раз редактировалось f.hump; 21.08.2011 в 10:21. |
|
21.08.2011, 02:55 | #6 | |||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
а это старый, которым не занимался полгода(решил немного сменить деятельность) Цитата:
просто почему я хотел сделать отдельно, ибо например три библы: Windows, Console, Sockets понятное дело что не каждому приложению нужны все три. PS: сейчас понял что написал много лишнего в вопросе. если надо, завтра переформулирую. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 21.08.2011 в 03:10. |
|||
21.08.2011, 07:34 | #7 | |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Цитата:
1. Один файл, наследование... - хорошо конечно, но раз у вас ООП, мы то не знаем чего у вас там за классы и что они будут делать, нужно сначала построить иерархию, спроектировать все сущности и разделить на классы, чтобы выполняли свои конкретные задачи. 2. Кроссплатформенность - тоже отлично, тогда имеет смысл определить, какие классы (с их методами) платформенно зависимы. Далее определиться, кроссплатформенность какая? runtime, на этапе компиляции или еще чего придумали? Если на этапе компиляции, то как обычно в С, через #define #ifdef и т.д. погнали соответствующие вызовы, если рантайм, то вынести класс вне основной библиотеки и подгружать динамически, например исходя из имени файла (ну добавить постфикс например или префикс win32 и т.п.). Я может не то говорю, но просто перечитал несколько раз сообщение ваше, ну не смог понять, как уж слишком все в теории как по мне. |
|
21.08.2011, 10:27 | #8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ну что сейчас имеется думаю понятно.
в одной длл и классы и функциональный интерфейс. вопрос в общем то можно сформировать гораздо короче, стоит ли менять литую длл, на набор [куча класс-длл + длл-функциональный интерфейс] иерархия примерно получается такая(пакет->классы): Код:
это не учитывая зависимостей между классами(ну и не все естестенно тут) вот я и хочу каждый из пакетов вынести отдельно. PS: вообще сейчас на свежую голову, затея мне вполне нравится, но мало ли, совет опытных товарищей не помешает(не фигню ли я придумал) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
22.08.2011, 20:52 | #9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
короче, закройте тему, пожалуйста.
сделаю так как хочу, если что вернусь к тому что было. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
22.08.2011, 21:12 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
ИМХО я бы все в одну ДЛЛ сложил...
Ты идешь путем дотнета и это хорошее решение, но удобное ли - вот вопрос. С одной стороны для программы не все ДЛЛки понадобятся, если ты не все будешь использовать, с другой стороны как обновлять устаревшие родительские ДЛЛ (несущие твой Base->Object), ведь это может повлиять на всю иерархию вниз. Я бы всетки в одну ДЛЛ сложил...
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Внешние процедуры | sunny_alice | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 03.06.2011 08:33 |
внешние ключи в interbase | Domanoff | БД в Delphi | 9 | 06.04.2010 16:15 |
«Внешние подпрограммы» | Dr.Caste | Помощь студентам | 0 | 20.12.2009 15:36 |
Библиотеки и модули | Принц | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 2 | 29.05.2008 16:39 |