Cтраница 4
При написании Delphi-приложения вы обычно создаете программный файл. Однако Delphi-приложения довольно часто осуществляют вызов функций, хранящихся в динамических библиотеках. [46]
В случае динамической компоновки компоновщик просто использует информацию о подпрограмме для настройки соответствующих таблиц в исполняемом файле. Когда исполняемый модуль загружается в память, операционная система загружает также все необходимые динамические библиотеки и заполняет внутренние таблицы программы адресами библиотечных подпрограмм в памяти, после чего программа запускается на исполнение. [47]
Хотя включение объектов DataWindow в файл ресурсов PowerBuilder достаточно просто, обычно это не делается. Объекты DataWindow, которые могут динамически назначаться в скриптах, обычно включаются в динамические библиотеки; это быстрее, чем внесение имен объектов в файл PBR и не оказывает влияния на производительность. [48]
Каждая динамическая библиотека содержит набор тесно связанных библиотечных процедур и все их структуры данных в одном файле, как правило ( но не всегда), с расширением ЛИ. Когда приложение компонуется, компоновщик видит, что некоторые библиотечные процедуры принадлежат к динамическим библиотекам, и записывает эту информацию в заголовок исполняемого файла. Обращения к процедурам динамических библиотек производятся не напрямую, а при помощи вектора передачи в адресном пространстве вызывающего процесса. Изначально этот вектор заполнен нулями, так как адреса вызываемых процедур еще неизвестны. [49]
Еще одно преимущество заключается в том, что DLL особенно подходят для сложных приложений. Если имеется большая программа, требующая частых обновлений и периодического устранения жучков, то разделение ее на несколько исполняемых файлов или динамических библиотек позволит распространять только измененные части, а не один большой исполняемый файл. [50]
В отличие от MS-DOS, где для удаления программы достаточно было стереть ее директорию, в системе Windows процесс деинсталляции проходит не так уж легко и чисто. У каждой программы, кроме тех файлов, что лежат в ее папке, есть свои файлы в папке Windows System ( обычно это динамические библиотеки и драйверы), на рабочем столе и в главном меню ( ярлыки), а также иногда ini - файлы в папке Windows. Кроме того, записи о ней содержатся в системном реестре ( в системах Windows 95 / 98 и в NT), в файлах win. [51]
Глобальная функция рассматривается как независимая сущность в среде PowerBuilder, они не связаны с какими либо классами. Это означает, что когда глобальная функция вызывается в скрипте, PowerBuilder должен искать ее в исполняемом файле и, возможно, в множестве динамических библиотек. Напротив, функции уровня класса рассматриваются как атрибуты класса, в котором они декларированы. В качестве атрибутов класса функции уровня класса сохраняются и размещаются в памяти вместе со всей остальной информацией, относящейся к соответствующему классу. В результате выполнение функции уровня класса осуществляется значительно быстрее, чем глобальной функции. [52]
Рабочий стол пакета SigmaStat 3. [53] |
Следует отметить, что пакет SigmaStat 3 позволяет проводить статистический анализ и математические операции на весьма высоком уровне. Совместная работа этих пакетов осуществляется с помощью выполнения команд главного меню Graph - Edit with SigmaPlot пакета SigmaPlot и Sigma Plot s advanced graph editing в пакете SigmaPlot 8.02. При этом подгружаются соответствующие динамические библиотеки без изменения интерфейса пакетов. При совместной работе пакета с другими приложениями Windows, например, Excel, одновременно отображаются пиктограммы пакета и соответствующего приложения. [54]
Когда разработчик или рабочая группа готовы сделать приложение доступным для пользователей, необходимо рассмотреть несколько возможностей его распространения. Далее, если требуются ресурсы, должны ли они распространяться отдельно, или быть перечисленными в файлах ресурсов PowerBuilder ( файлы PBR) и включаться в дистрибутивную копию в составе исполняемого файла либо одной или нескольких динамических библиотек. [55]
Различные маршруты выполнения вызовов Win32 API. [56] |
В некоторых случаях динамические библиотеки обращаются к другой динамической библиотеке ( ntdll. Этот путь показан на рисунке как шаги 2а и За. Динамическая библиотека может также выполнить всю работу самостоятельно, совсем не обращаясь к системным вызовам. Для других вызовов Win32 API выбирается другой маршрут, а именно: сначала процессу подсистемы Win32 ( csrss. При этом в некоторых случаях подсистема также выполняет всю работу в пространстве пользователя и немедленно возвращает управление. [57]
В некоторых случаях динамические библиотеки обращаются к другой динамической библиотеке ( ntdlldll) которая, в свою очередь, обращается к ядру операционной системы. Этот путь показан на рисунке как шаги 2а и За. Динамическая библиотека может также выполнить всю работу самостоятельно, совсем не обращаясь к системным вызовам. Для других вызовов Win32 API выбирается другой маршрут, а именно: сначала процессу подсистемы Win32 ( csrss. При этом в некоторых случаях подсистема также выполняет всю работу в пространстве пользователя и немедленно возвращает управление. [58]