![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| kvazar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 25.10.2004 Репутация: нет Всего: нет |
Привет всем!
Есть проблема. Имеется большой проект, состоящий из многих dll файлов(штук 15). Среди них имеются циклически зависимые друг от друга. А хочет Б, Б хочет В, В хочет Г, Г хочет А... Винда98 на это чихает, грузит по одной копии каждой dll. А Win2K грузит аж 8 копий одной из dll! Нам важно, чтобы каждая dll присутствовала в одном экземпляре. Переструктурировать прожект не хочется. Очень наго древнего лапшового кода. Да и в зависимостях ли дело? Мы используем CBuilder++ 6.0 + DELPHI. Хельп! |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Задачка решается ну очень просто: в функции DllMain нужно проверять (уж каким способом - решайте сами, можно через события или расшаренную переменную, наконец), загружена ли уже такая длл. Если да - то выполнять (прямо из длл !) FreeLibrary с хэндлом этой длл-ки.
З.Ы. я только не уверен, будет ли после этого работать хотя бы одна экпортируемая функция в вызывающем модуле... -------------------- ![]() |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
Помоему это связанно с компилятором.
Точно также делал на VC++, и все нормально было (по одной копии). |
|||
|
||||
| kvazar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 25.10.2004 Репутация: нет Всего: нет |
Проблему решили перейдя на динамическую подгрузку dll.
handle = GetModuleHandle("blablabla"); if(handle == NULL) handle = LoadLibrary("blablabla"); ... proc = GetProcAddress(handle, "doTuplo"); и т.д. Геморно было переделывать, ну да ладно. Всем спасибо Это сообщение отредактировал(а) kvazar - 27.10.2004, 09:52 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |