OberonCore https://forum.oberoncore.ru/ |
|
Создание so/dll/lib/a https://forum.oberoncore.ru/viewtopic.php?f=1&t=2401 |
Страница 1 из 1 |
Автор: | Alexey Veselovsky [ Воскресенье, 28 Февраль, 2010 17:28 ] |
Заголовок сообщения: | Создание so/dll/lib/a |
Предысторию см. тут: viewtopic.php?f=27&t=2400 Вопрос -- можно ли сделать из модуля/множества модулей, нормальную so/dll/lib/a библиотеку, которую можно было бы использовать из какого-нибудь С++? Причем, желательно, чтобы отличий от какой-нибудь сишной библиотеки было минимум. Компилятор какого-нибудь C++ -- скорее всего gcc, если это важно. Платформа -- windows, linux. |
Автор: | Илья Ермаков [ Воскресенье, 28 Февраль, 2010 19:53 ] |
Заголовок сообщения: | Re: Создание so/dll/lib/a |
Конечно, можно. Смотрите документацию Блэкбокса, раздел "Платформенно-зависимые особенности" и документацию модуля DevLinker (правой кнопкой по имени модуля - и Documentation). so - тоже без проблем, в пакете от финнов и далее у Димыча в сборке есть DevElfLinker. |
Автор: | Alexey Veselovsky [ Воскресенье, 28 Февраль, 2010 20:01 ] |
Заголовок сообщения: | Re: Создание so/dll/lib/a |
Вопрос -- а что там будет с именами функций? Т.е. ведь имя функции в CP имеет вид Модуль.Функция. Т.е. должен быть какой-то манглинг. |
Автор: | AVC [ Воскресенье, 28 Февраль, 2010 20:52 ] |
Заголовок сообщения: | Re: Создание so/dll/lib/a |
Alexey Veselovsky писал(а): Вопрос -- а что там будет с именами функций? Т.е. ведь имя функции в CP имеет вид Модуль.Функция. Т.е. должен быть какой-то манглинг. Пример из документации ББ ("Platform-Specific Issues (Windows)"). Код: MODULE MyInterface ["MyDll"];
PROCEDURE Proc1*; (* Proc1 èç MyDll *) PROCEDURE Proc2* ["BlaBla"]; (* BlaBla èç MyDll *) PROCEDURE Proc3* ["OtherDll", ""]; (* Proc3 èç OtherDll *) PROCEDURE Proc4* ["OtherDll", "DoIt"]; (* DoIt èç OtherDll *) END MyInterface. |
Автор: | Alexey Veselovsky [ Воскресенье, 28 Февраль, 2010 21:12 ] |
Заголовок сообщения: | Re: Создание so/dll/lib/a |
Спасибо. |
Автор: | Иван Горячев [ Понедельник, 01 Март, 2010 01:07 ] |
Заголовок сообщения: | Re: Создание so/dll/lib/a |
AVC писал(а): Пример из документации ББ ("Platform-Specific Issues (Windows)"). Это импорт dll в Блэкбокс. Для экспорта нужно смотреть документацию DevLinker. Там сказано: Цитата: <destFile> := {<module> {option}} {idNumber <resourceFile>}. ... option is one of the following characters: ... # interface module: the exported procedures of this module are added to the export list. Т.е. процедуры экспортируются без имён модулей. Правда не ясно что будет в случае совпадения имён. |
Автор: | AVC [ Понедельник, 01 Март, 2010 01:18 ] |
Заголовок сообщения: | Re: Создание so/dll/lib/a |
Иван Горячев писал(а): # interface module: the exported procedures of this module are added to the export list. Да, верно. Для экспорта необходим символ # после имени модуля. |
Автор: | Роман М. [ Вторник, 02 Март, 2010 01:37 ] |
Заголовок сообщения: | Re: Создание so/dll/lib/a |
Если в TestExport1 и TestExport2 находятся описания переменных и процедур для экспорта, то так: Win32 DevLinker.LinkDll libexport.dll := TestCore TestExport1# TestExport2# ~ Linux DevElfLinker.LinkDll libexport.so := TestCore TestExport1# TestExport2# ~ ElfLinker нужно устанавливать отдельно. |
Автор: | Oleg N. Cher [ Пятница, 17 Июль, 2015 15:38 ] | ||
Заголовок сообщения: | Re: Создание so/dll/lib/a | ||
По теме также см. мою статью «BlackBox Component Builder: линковка и Linux». Линкуем независимое приложение для Windows и Linux на примере игры Samurai (Дениса Колодько), написанной на Компонентном Паскале (BlackBox).
|
Автор: | prospero78 [ Среда, 12 Август, 2015 18:51 ] |
Заголовок сообщения: | Re: Создание so/dll/lib/a |
Буквально вчера компилял для окошек: DevLiner.LinkDLL Работает на ура) |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |