| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Циклические зависимости в DLL |
| Автор: kvazar 25.10.2004, 21:05 |
| Привет всем! Есть проблема. Имеется большой проект, состоящий из многих dll файлов(штук 15). Среди них имеются циклически зависимые друг от друга. А хочет Б, Б хочет В, В хочет Г, Г хочет А... Винда98 на это чихает, грузит по одной копии каждой dll. А Win2K грузит аж 8 копий одной из dll! Нам важно, чтобы каждая dll присутствовала в одном экземпляре. Переструктурировать прожект не хочется. Очень наго древнего лапшового кода. Да и в зависимостях ли дело? Мы используем CBuilder++ 6.0 + DELPHI. Хельп! |
| Автор: mr.DUDA 26.10.2004, 07:26 |
| Задачка решается ну очень просто: в функции DllMain нужно проверять (уж каким способом - решайте сами, можно через события или расшаренную переменную, наконец), загружена ли уже такая длл. Если да - то выполнять (прямо из длл !) FreeLibrary с хэндлом этой длл-ки. З.Ы. я только не уверен, будет ли после этого работать хотя бы одна экпортируемая функция в вызывающем модуле... |
| Автор: Mad 26.10.2004, 12:44 |
| Помоему это связанно с компилятором. Точно также делал на VC++, и все нормально было (по одной копии). |
| Автор: kvazar 27.10.2004, 09:50 |
| Проблему решили перейдя на динамическую подгрузку dll. handle = GetModuleHandle("blablabla"); if(handle == NULL) handle = LoadLibrary("blablabla"); ... proc = GetProcAddress(handle, "doTuplo"); и т.д. Геморно было переделывать, ну да ладно. Всем спасибо |