MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Реализация отложенной загрузки библиотек на С++

Название:Реализация отложенной загрузки библиотек на С++
Просмотров:77
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:Краткая предыстория. Требования к библиотеке, реализующей механизм Delay load. Предлагаемая реализация библиотеки. Класс, инкапсулирующий работу с модулями. Реализация динамического поиска функций и глобальной таблицы импорта.

Университетская электронная библиотека.
www.infoliolib.info

Часть полного текста документа:

Реализация отложенной загрузки библиотек на С++ Андрей Солодовников
    Вы все еще грузите библиотеки вручную?
    Тогда мы идем к вам! Краткая предыстория
    По специфике моей работы мне довольно часто приходится вручную загружать библиотеки и динамически, при помощи GetProcAddress, импортировать множество функций. Это происходит отчасти потому, что требуется обеспечить совместимость с различными версиями Windows, в которых целевые функции могут отсутствовать, отчасти потому, что так бывает удобнее (например, при реализации механизма плагинов). Конечно, всегда хочется это автоматизировать, особенно если функций и библиотек много. С одной стороны, в линейке Visual C++ для этого есть поддержка компилятора\линкера в виде механизма Delay Load, с другой стороны, бытует мнение, что использовать этот метод является дурным тоном, и, наверное, это так. Одна из основных причин, которую хочется отметить особенно - этот механизм является microsoft-specific, то есть никаких гарантий, что написанный Вами код будет работать и на других компиляторах или платформах, нет. Более того, несколько раз "попав" на странное поведение этого механизма (например, см. Q218613), мы от его использования в своих проектах отказались.
    Следующим шагом был поиск готового подходящего функционала. Как ни странно, такого не находилось, несмотря на то, что проблема действительно имеет место быть. Многие решения были слишком просты и неоптимальны (например, это решение). Они не позволяли определять импорт сразу нескольких функций из одной библиотеки, либо для этого нужно было написать приличное количество кода. Они вызывали GetProcAddress и LoadLibrary в любое время, когда им вздумается, а на самом деле - чуть ли не при каждом обращении к импортируемой функции. Другие (например, такое решение) было достаточно сложно и неудобно использовать.
    ПРИМЕЧАНИЕ
    На самом деле, указанные варианты вполне могут быть использованы в небольших проектах, когда не требуется импортировать большое количество функций. Однако их использование в любом случае требует достаточно много усидчивости и терпения, по крайней мере, меня это не устраивало. И общий недостаток всех этих решений - они были и есть неоптимальны. Особенно это касается количества кода, генерируемого компилятором (да и программистом) на одну импортируемую функцию и быстродействия полученного кода.
    Все это, вкупе с потраченным временем, сподвигло меня к необходимости написания очередного велосипеда в виде библиотеки эмуляции Delay Load, а также и этой статьи. Требования к библиотеке, реализующей механизм Delay load
    В данном параграфе мы рассмотрим более подробно, каким базовым требованиям должен удовлетворять механизм динамической загрузки библиотек.
    Исходя из описанного выше, можно сформулировать следующие требования к механизму поддержки динамической загрузки библиотек:
    Как можно большая независимость от компилятора С++ (в пределах ANSI C++). Минимальные требования к компилятору - библиотека должна быть полностью функциональна на всех Visual C++ компиляторах, начиная с Visual C++ 6.0;
    Минимальное количество кода, генерируемого компилятором, которое приходится на одну импортируемую функцию; Удобство определения в проекте импортируемых библиотек\функций;
    Возможность задания своих стратегий (реакций) на ошибки загрузки библиотеки\нахождения функции;
    Минимизация вызовов LoadLibrary. ............






Похожие работы:

Название:Мифология. Функции мифа. Мифологические школы
Просмотров:679
Описание: Мифология как мир первообразов и материя духовности Но для создателей мифологии она была не просто достоверной или истинной. У них и вопроса не могло возникнуть об истинности. Для первобытного человека мифология

Название:Общественные функции СМИ. По кн. Введение в журналистику
Просмотров:780
Описание: Цвик В. Л. Для чего существует журналистика? Зачем она нужна отдельному индивиду и обществу в целом? Иными словами, каковы социальные функции СМИ? Сразу условимся, что термин "функции” мы будем понимать как разн

Название:Понятие, задачи, система и основные функции органов внутренних дел
Просмотров:664
Описание: Органы внутренних дел представляют собой сложную, разветвленную систему, в которую входят в качестве ее функциональных элементов (подсистем) милиция, пожарная охрана, внутренние войска, следственный аппарат и др. О

Название:Функции культурных норм
Просмотров:646
Описание: Культурные нормы выполняют в обществе очень важные функции. Они являются обязанностями и указывают меру необходимости в человеческих поступках; служат ожиданиями в отношении будущего поступка; контролируют откл

Название:Психологическая теория деятельности: действия и цели; операции; психофизиологические функции
Просмотров:411
Описание: Гиппенрейтер Ю.Б. Психологическая теория деятельности была создана в советской психологии и развивается уже на протяжении более 60 лет. Она обязана работам советских психологов: Л.С. Выготского, С.Л. Рубинштейна, А

 
     

Вечно с вами © MaterStudiorum.ru