|
28 / 27 / 11
Регистрация: 04.03.2010
Сообщений: 199
|
|||||||||||
Нужен ли вызов FreeLibrary01.05.2022, 23:51. Показов 1634. Ответов 5
Метки нет (Все метки)
Здравствуйте!
Допустим, имеется некоторый класс MyClass, который использует функцию AlphaBlend(). Но условие - эта функция должна загружаться динамически.Отсюда получается такой код:
Draw() и будет непосредственно вызывать функцию AlphaBlend().Но так как в главном приложении создаётся два экземпляра этого класса, то появляется вопрос с вызовом функции FreeLibrary().Здесь уже понятно, что в деструкторе класса MyClass не получится делать вызов FreeLibrary(), т.к. при удалении первого экземпляра класса, второй ещё может использовать импортированную функцию AlphaBlend().Как можно здесь поступить правильно? Нужно ли вообще делать вызов FreeLibrary() в таком случае? Насколько правильным будет его не делать, а позволить главному приложению при завершении работы программы автоматически (без явного вызова FreeLibrary()) выполнить освобождение загруженной в процесс библиотеки?
0
|
|||||||||||
| 01.05.2022, 23:51 | |
|
Ответы с готовыми решениями:
5
FreeLibrary очищает память которая выделялась в функции библиотеки? Непонятный код с FreeLibrary
|
|
|
||
| 02.05.2022, 00:19 | ||
|
вы же ваяете код, вот и смотрите когда библиотека больше не нужна. я обычно выгружаю DLL в конце своей internal функции, т.к. повторный вызов этой функции снова загрузить эту DLL.
1
|
||
|
28 / 27 / 11
Регистрация: 04.03.2010
Сообщений: 199
|
|||
| 02.05.2022, 00:56 [ТС] | |||
MyClass. Но всё было бы хорошо, если бы экземпляр класса был один, а их может быть несколько. И первый же вызов деструктора с освобождением библиотеки угробит жизнь остальным существующим экземплярам этого класса.
0
|
|||
|
COM‐пропагандист
|
|||
| 02.05.2022, 06:51 | |||
|
0
|
|||
|
2650 / 1661 / 267
Регистрация: 19.02.2010
Сообщений: 4,394
|
||
| 02.05.2022, 09:50 | ||
|
Т.е. перенеси поле-дескриптор из своего класса в отдельный класс-singleton. И поле-указатель на функцию туда же упихай, чтобы отдавать из синглтона именно готовый указатель на функцию (вместо дескриптора либы).
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 02.05.2022, 13:36 | ||
|
Отсюда и все эти проблемы. Почему вообще MyClass занимается загрузкой библиотеки, да еще и 2 раза, с учетом того, что вы создаете два экземпляра? Как только вы разделите ответственность загрузки библиотеки и использования результата этой загрузки (например, как выше предложили с помощью singleton, либо просто в отдельном классе-загрузчике, объект которого создается до ваших объектов MyClass - здесь уже как угодно), то все сразу станет гораздо более управляемым.
0
|
||
| 02.05.2022, 13:36 | |
|
Помогаю со студенческими работами здесь
6
Принцип работы функции FreeLibrary() application-defined exception. Ошибка в FreeLibrary
Нужен пример на OleDb - заполнение ДатаГрида через вызов хранимой процедуры с параметрами. (ASP.NET) Вызов методов классов друг у друга (вызов метода из другого класса) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|