Компилятор Делавар. Создание DLL — различия между версиями

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
 
м
 
Строка 1: Строка 1:
 +
'''Создание DLL'''
  
 +
Общая информация. В опциях компилятора используйте ключ -m для отмены декорирования имен функций при компиляции библиотеки. На данный момент имеется ограничение: начальная инициализация глобальных переменных, определенных в модулях исходного кода, составляющих DLL, не реализована.
 +
 +
==Для ОС Windows.==
 +
 +
В версии компилятора 0.54 появилась возможность создания динамически загружаемых библиотек (DLL). В качестве точки входа используйте функцию WinAPI DllMain. В опциях компоновщика ld для этого пользуйтесь ключом -e. Для инициализации библиотеки используйте какую-нибудь функцию в момент наступления события DLL_PROCESS_ATTACH, например. С помощью файла экспорта (с расширением *.def) определите экспортируемые функции. Формат этого файла довольно прост: LIBRARY "имя_библиотеки_с_расширением" EXPORT список_имен_экспортируемых_функций. Имя каждой функции должно начинаться с новой строки. Также можно указать адрес размещения библиотеки BASE=0xDDDDDDDD, где 0xDDDDDDDD - шестнадцатиричный адрес. Пример создания DLL имеется в папке C:\DC32\EX\MODULES\OOPDLL и C:\DC32\EX\GTK\TVIEWDLL\DLL, а также в C:\DC32\EX\WIN32\DLLTEST. Там же хранятся примеры динамической компоновки библиотеки.
 +
 +
==Для ОС Linux.==
 +
 +
Возможность создания DLL появилась в версии компилятора 0.58. При необходимости, для инициализации библиотеки используйте предопределенную функцию _finit(), при завершении работы библиотеки - функцию _fini(). Пример создания DLL имеется в папке /DC32/EX/MODULES/TESTDLL и /DC32/EX/MODULES/TESTDYNDLL. Ограничение: на данный момент не реализован экспорт глобальных переменных в разделяемой библиотеке.
  
  

Текущая версия на 21:59, 13 января 2016

Создание DLL

Общая информация. В опциях компилятора используйте ключ -m для отмены декорирования имен функций при компиляции библиотеки. На данный момент имеется ограничение: начальная инициализация глобальных переменных, определенных в модулях исходного кода, составляющих DLL, не реализована.

Для ОС Windows.

В версии компилятора 0.54 появилась возможность создания динамически загружаемых библиотек (DLL). В качестве точки входа используйте функцию WinAPI DllMain. В опциях компоновщика ld для этого пользуйтесь ключом -e. Для инициализации библиотеки используйте какую-нибудь функцию в момент наступления события DLL_PROCESS_ATTACH, например. С помощью файла экспорта (с расширением *.def) определите экспортируемые функции. Формат этого файла довольно прост: LIBRARY "имя_библиотеки_с_расширением" EXPORT список_имен_экспортируемых_функций. Имя каждой функции должно начинаться с новой строки. Также можно указать адрес размещения библиотеки BASE=0xDDDDDDDD, где 0xDDDDDDDD - шестнадцатиричный адрес. Пример создания DLL имеется в папке C:\DC32\EX\MODULES\OOPDLL и C:\DC32\EX\GTK\TVIEWDLL\DLL, а также в C:\DC32\EX\WIN32\DLLTEST. Там же хранятся примеры динамической компоновки библиотеки.

Для ОС Linux.

Возможность создания DLL появилась в версии компилятора 0.58. При необходимости, для инициализации библиотеки используйте предопределенную функцию _finit(), при завершении работы библиотеки - функцию _fini(). Пример создания DLL имеется в папке /DC32/EX/MODULES/TESTDLL и /DC32/EX/MODULES/TESTDYNDLL. Ограничение: на данный момент не реализован экспорт глобальных переменных в разделяемой библиотеке.


См. также


Яндекс | Картинки | Видео | Карты | Карты ОСМ | Спутник | Гугл | Вольфрам-Альфа | РуВики | EnWiki