Компилятор Делавар. Создание DLL — различия между версиями
Админ (обсуждение | вклад) (Новая страница: « == См. также == * Компилятор Делавар Категория:Компилятор Делавар Категория:Ubuntu {{i}}») |
Дизайнер (обсуждение | вклад) м |
||
Строка 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