OleFree - Библиотека поддержки OLE для Lazarus/FreePascal
В связи с тревожными сообщениями о прекращении разработки Delphi корпорацией Borland заинтересовался свободным клоном Delphi - средой для разработки приложений на FreePascal - Lazarus. К сожалению, Lazarus, в отличие от собственно FreePascal - система пока еще достаточно сырая - пока существует лишь бета-версия. Среда включает библиотеку LCL - свободный клон VCL. Пока что отсутствует поддержка DragDrop в приложениях, не реализована работа с OLE. Последнее очень важно для применения в среде Windows, поэтому постарался заполнить этот пробел. Реализованная мной библиотека - скорее только первая проба работы с OLE из FreePascal. Может, кому пригодиться либо для использования, либо для дальнейшей разработки лучшей реализации.
Библиотека состоит из dll-библиотеки dispf.dll и модулей на языке Delphi, предназначенных для компиляции в среде Lazarus в составе проектов, работающих с Microsoft OLE. Все исходники, включая, разумеется, и исходники dll-библиотеки - открытые, и распространяются под BSD-Like лицензией (разрешается распространение, модификация и включение в состав любых проектов, как с открытым, так и с закрытым исходным кодом; единственное требование - в исходных кодах сохранять уведомление об авторских правах на оригинал).
dispf.dll написана на Visual Studio C++ (версии 7, но это не критично, используется только Windows API). dll-файл следует поместить в любое место, откуда он будет доступен для загрузки - в папку с использующим его exe-файлом, в рабочий каталог программы, в каталог Windows, в системный каталог и т.п.
20 марта 2007 - исправлена ошибка в файле проекта версии 0.9, вследствие которой из dispf.dll, собранной в конфигурации "Release", не экспортировались символы. В результате приложение не запускалось с использованием откомпилированной dispf.dll из olefree-bin-0.9.zip. Выводилась ошибка "Ошибка при инициализации приложения 0xc000007b. Сообщение об ошибке: Pavel, Гостевая книга, 2 марта 2007 00:29. В файл dispf.vcproj, в ветку "Release|Win32", добавлена строчка ModuleDefinitionFile="dispf.def".
Скачать: