C++ ООП 1 Рассылка.ppt
- Количество слайдов: 14
2. 2. Динамически присоединяемые библиотеки - DLL. “ Out of memory…. “ Оверлеи – это части одной программы, которые разделяют общую области оперативной памяти. Назначение: • Снизить требования к RAM, • Создать программу значительно превышающую объемы RAM
Объем базового модуля (*. exe) Общий объем RAM, занимаемый программой Недостатки статистических оверлеев: • Требуется глубокая системная проработка • Программы не обладают гибкостью • Отсутствует возможность рекурсивного вызова
Динамические оверлеи допускают перекрестные ссылки и механизм их работы соответствует механизму виртуализации операционной системы VM/CР 1. Минимизировать размер резидентского кода программы 2. Установить область свопинга как Optimum Быстродействие <->Память 3. Установить модель памяти программы: Medium / Large / Hurge {ГМ] -> [Options] ->-> [Compiler] -> [Code Generation] 4. Откомпилировать срр- модули как оверлеи, то есть с опцией «-у» : TCC. EXE - ML - Yo OVL 1. CPP -Yo GRAPHICS. LIB TCC. EXE - MM GRAPHICS. LIB -Yo OVL 2. CPP TCC - MH MAIN. CPP -Yo OVL 1. CPP OVL 2. CPP
Статистическое связывание - реализация принципа модульности на основе использование механизма создания многофайловых проектов, где доступ к классам, функциям, общедоступным переменным и константам выполняется через заголовочные файлы *. H или *. HPP. Динамически присоединяемые библиотеки – новый способ реализации принципа модульности. В C++Builder есть 2 способа использования DLL- библиотек: • Статистическое присоединение • Динамическое присоединение
Пусть необходимо использовать функцию FULL_WINDOW() из My. Example. DLL 1. В приложении проекта надо объявить указатель на функцию : Void (_stdcall * FULL_WINDOW)(NWIND); 2. Загрузить библиотеку с помощью библиотечной функции APIWINDOWS: HINSTANCE dllinstance=Load. Library(“My. Example. dll”); 3. Получить в программе адрес для размещения функции: FULL_WINDOW= void (_stdcall *)(NWIND) Get. Proc. Adress (dllinstance, “FULL_WINDOW”); 4. Использовать функцию следующим образом: FULL_WINDOW (Application -> Handle); 5. Высвободить dll-модуль для освобождения RAM: Free. Library (dllinstance);
Технология создания DLL-библиотек: 1. 1. 1. [ГМ] -> [FILE] -> [New] -> [Others…] 1. 2. Появится окно New Items, где выбрать вкладку->[DLL или DLL Wizard ] 1. 3. Повторное открытие уже ранее созданного DLL-проекта [ГМ] -> [FILE] -> [Open] ->[Каталог(Папка) с DLL-bpf/cpp ]
2. Предупреждения об особенностях организации передачи значения параметров в функцию и возврата результатов для строковых данных, например Ansi. String:
3. Отредактировать программно созданный текст в сторону упрощения, например вычеркнув файл подключения VCL. H.
Отредактировать и сохранить заголовочный файл *. H или *. HPP или создать, если не был создан ранее:
4. Проверка включения мастером DLL опции Generation DLL вместо Generation EXE: [ ГМ ] -> [ Project ] -> [ Options…] -> Выбрать [ Вкладка Linker ] Опция Generation DLL автоматически генерирует файл *. LIB для статического присоединения DLL
5. Выполнить команду создания файла *. DLL и *. LIB: [ ГМ ] -> [ Project ] -> [ Build All Projects] Получим:
6. Использовать созданные DLL-библиотеки: 6. 1. После директивы препроцессору проекта #pragma hdrstop подключить заголовочный файл: #include “My. DLL. h” 6. 2. С помощью Project Manager включить в проект дополнительную компоненту “My. Example. hpp”. [ ГМ ] -> [ Project ] -> [ Add to Project… ] или [ ГМ ] -> [ View ] -> [ Project Source ] 6. 3. Проверить появился ли после этого в головном файле оператор: USELIB (“My. DLL. lib”);
C++ ООП 1 Рассылка.ppt