OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 13 Декабрь, 2019 17:19

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Создание so/dll/lib/a
СообщениеДобавлено: Воскресенье, 28 Февраль, 2010 17:28 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Предысторию см. тут: viewtopic.php?f=27&t=2400

Вопрос -- можно ли сделать из модуля/множества модулей, нормальную so/dll/lib/a библиотеку, которую можно было бы использовать из какого-нибудь С++? Причем, желательно, чтобы отличий от какой-нибудь сишной библиотеки было минимум.

Компилятор какого-нибудь C++ -- скорее всего gcc, если это важно. Платформа -- windows, linux.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание so/dll/lib/a
СообщениеДобавлено: Воскресенье, 28 Февраль, 2010 19:53 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9165
Откуда: Россия, Орёл
Конечно, можно.

Смотрите документацию Блэкбокса, раздел "Платформенно-зависимые особенности" и документацию модуля DevLinker (правой кнопкой по имени модуля - и Documentation).

so - тоже без проблем, в пакете от финнов и далее у Димыча в сборке есть DevElfLinker.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание so/dll/lib/a
СообщениеДобавлено: Воскресенье, 28 Февраль, 2010 20:01 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Вопрос -- а что там будет с именами функций? Т.е. ведь имя функции в CP имеет вид Модуль.Функция. Т.е. должен быть какой-то манглинг.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание so/dll/lib/a
СообщениеДобавлено: Воскресенье, 28 Февраль, 2010 20:52 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
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.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание so/dll/lib/a
СообщениеДобавлено: Воскресенье, 28 Февраль, 2010 21:12 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание so/dll/lib/a
СообщениеДобавлено: Понедельник, 01 Март, 2010 01:07 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
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.

Т.е. процедуры экспортируются без имён модулей. Правда не ясно что будет в случае совпадения имён.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание so/dll/lib/a
СообщениеДобавлено: Понедельник, 01 Март, 2010 01:18 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Иван Горячев писал(а):
# interface module: the exported procedures of this module are added to the export list.

Да, верно. Для экспорта необходим символ # после имени модуля.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание so/dll/lib/a
СообщениеДобавлено: Вторник, 02 Март, 2010 01:37 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Если в TestExport1 и TestExport2 находятся описания переменных и процедур для экспорта, то так:
Win32
DevLinker.LinkDll libexport.dll := TestCore TestExport1# TestExport2# ~

Linux
DevElfLinker.LinkDll libexport.so := TestCore TestExport1# TestExport2# ~

ElfLinker нужно устанавливать отдельно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание so/dll/lib/a
СообщениеДобавлено: Пятница, 17 Июль, 2015 15:38 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 350
Откуда: Украина, Днепропетровская обл.
По теме также см. мою статью «BlackBox Component Builder: линковка и Linux». Линкуем независимое приложение для Windows и Linux на примере игры Samurai (Дениса Колодько), написанной на Компонентном Паскале (BlackBox).


Вложения:
LinkLinux.zip [148.42 КБ]
Скачиваний: 146
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание so/dll/lib/a
СообщениеДобавлено: Среда, 12 Август, 2015 18:51 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1133
Откуда: СССР v2.0 rc 1
Буквально вчера компилял для окошек:
DevLiner.LinkDLL
Работает на ура)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB