![]() |
|
![]() ![]() ![]() |
|
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Вообщем зхадача не из легких.
Есть SDI где-то с 20 представлениями. К каждому классу представления подключены еще отдельные заголовки других классов, для кнопочек, баз данных, и прочеих женских прелестей. Мне нужно ВЕСЬ проект разбить на либы-каждое представление - либа. 1.Как по умному перенести готовые классы представлений. 2.Как быть с подключенными файлами других классов У меня уже начинает болеть голова.. ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
nikf |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 6.6.2005 Где: город-герой Жирно вск Репутация: 1 Всего: 1 |
Если конечно есть веские причины тогда конечно можно разнести. берешь бумажку и рисуешь все классы проги и смотришь как они взаимодействуют друг с другом. А потом пытаешься делить.. Какие-то общие классы выделяешь в отдельную dll и потом подключаешь ее к exe и всем dll-кам представлений.. примерно так.
Это сообщение отредактировал(а) nikf - 3.11.2005, 15:26 |
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Вот у меня есть общие классы, которые подключаются к окнам. Я их выношу в отдельную dll. Что дальше? нужно подгружать их вв dll ,в которой они используются? Т.е. получается паровоз? А что делать в ехе? Будет ли видеть прога функции dll. которые присоединяются к другой dll? Или надо все подключать в ехе? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Просто dependences установи. Ты не сказал, но я надеюсь, все это можно оставить в одном воркспэйсе (солюшене).
Подключать нужно только то, что прямо вызывается. Можно не ломать голову, начав с "нулевого" варианта - ничего не подключать, только обеспечить видимость нужных хедеров. Потом, по мере воплей линкера, устанавливать зависимости. Поверь, это вовсе не так страшно. В ехе можно оставить конфигурационный код - где-то же нужно управлять подключением компонент. -------------------- ... |
||||
|
|||||
nikf |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 6.6.2005 Где: город-герой Жирно вск Репутация: 1 Всего: 1 |
ты же используешь неявное подключение dll(я так думаю ![]() Это сообщение отредактировал(а) nikf - 3.11.2005, 20:27 |
|||
|
||||
bel_nikita |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 2 Всего: 47 |
На самом деле разбить все на ДЛЛ это очень хорошо. Все идет паровозом ![]() А что за SDI? Если это однотипные диалоги, то продумать интерфейс вызова этих ДЛЛ. К примеру, у меня есть "проект пустышка", его задача держать связь с сервером и запускать нужные ДЛЛ по запросу пользователя. Продумал интерфес, который должны соблюдать все длл и последовательность вызова. Все... Теперь несколько человек пишут свои независимые ДЛЛ, а я лишь в xml файле создаю ассоциации: событие - ДЛЛ, т.е. по такому-то событию должна вызываться такая-то ДЛЛ. У меня типа такого интерфейса:
pBufer - это структура для инициализации ДЛЛ, или данные с которыми должна работать данная длл. А вот, такой меню файл (xml), где прописываю очередной пункт меню, ДЛЛ и путь к ней:
Так же можно указывать свои иницилизационные параметры, для каждой отдельной ДЛЛ. Добавлено @ 21:21 А для "разноса" проекта по ДЛЛ рекомендую применить передовую технологию copy-past ![]() |
||||||
|
|||||||
Coocky |
|
||||||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
![]()
![]()
![]() Earnest
![]() Я понял, что ничего незнаю об МФС ДЛЛ ![]() Добавлено @ 21:45 bel_nikita
Старина, я не так крут ![]() Это сообщение отредактировал(а) Coocky - 3.11.2005, 21:47 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||||||||
|
|||||||||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 2 Всего: 47 |
||||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Создал свой класс в длл,производный от диалога class My_Dll.
Добавил функцию void My_Dll::Create_Dialog (); внутри нее вызвал Create(IDD_DIALOG1); Подключил все к проге, а она не видит Mydll.Create_Dialog (); А вот Mydll.Create(IDD_DIALOG) видит(правда не видит IDD_DIALOG1, ну это и понятно). Если кому не трудно, напишите простенький пример, как экспортировать класс. Что б я понял, как правильно. Чуйка у меня, что не правильно в заголовочном файле длл директивы препроцессора прописую.. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 2 Всего: 47 |
Coocky
а не смотрел ссылки? там как раз есть про экспорт MFC классов Добавлено @ 12:21 могу примерчик проекта сделать, но только вечером ![]() |
|||
|
||||
Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
bel_nikita
Очень прошу! ![]() Сделай MFC extension Dll проект, добавь любой диалог. и добавь функцию к классу диалога(к примеру void Coocky_stuped() ) И посмотри-отобразится ли в твоем примере ехе вызов этой функции -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
|||
|
||||
bel_nikita |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 2 Всего: 47 |
Компилятор и IDE: MSVC6 + SP6 1. Создаем стандартный MFC проект MainAppl. 2. Добавляем итем в меню и создаем событие:
4. В опциях проекта прописывам _AFXEXT и выставляем Debug Multithreaded DLL ( по другому: /MDd /D "_AFXEXT" ) 5. Делаем ребилд. Теперь займемся нашей DLL: 6. Создаем в той же директории, что и MainAppl, MFC extensions DLL. У нас это проект CoockyDLL. 7. Создаем в ресурсах диалог и его класс. У нас это CDialogCoocky : public CDialog. 8. Создаем классовую функцию Coocky_Is_You_Function:
9. Вставляем макрос AFX_EXT_CLASS:
10. Комментируем: //enum { IDD = IDD_DIALOG1 };
11. Открываем DialogCoocky.cpp и прописываем: IDD_DIALOG1
12. В файле StdAfx.h прописываем: #include "resource.h" 13. Делаем ребилд. Наша DLL готова. Возвращаемся к нашему MainAppl. 14. Подключаем к проекту файл DialogCoocky.h 15. В файле StdAfx.h прописываем: #include "CoockyDLL/DialogCoocky.h" 16. В файле StdAfx.cpp прописываем:
17. Теперь возвратимся к нашей функции OnCoockyDll(), в которой вызываем диалог из DLL:
18. Делаем ребилд проекта. 19. Копируем нашу CoockyDLL.dll в %PROJECT\Debug\ 20. Нажимаем Execute MainAppl.exe и наслаждаемся ![]() З.Ы.: проблемы типа: а чего в моей длл вызываются ресурсы ехе проекта - не рассматривались и мною опущены ![]() Это сообщение отредактировал(а) bel_nikita - 4.11.2005, 21:09 Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() |
||||||||||||||
|
|||||||||||||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 2 Всего: 47 |
||||
|
||||
Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Итак анализируем. Этому меня неучили да и в мануалах ненашел! ![]() Может из-зи этого трабла у меня была. Сейчас гляну ![]() Добавлено @ 12:50
Этого у меня нет..Но это наверное код "шестерки" ![]() -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья ![]() |
||||
|
|||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 2 Всего: 47 |
Coocky
![]() |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |