![]() |
|
Модераторы: xvr |
![]()
|
|
| fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: нет Всего: 3 |
Всем привет.
Вопрос такой: пришлось писать плагины (.so) под Linux, язык С++, и возникло несколько проблем: 1. При компиляции имя функции изменяется, видимо для отслеживания атрибутов и другой информации самим GCC. Я не против, но как сделать так, чтобы при вызове dlsym можно указывать исходное имя. В целом, можно и подсмотреть какое оно в библиотеке и прописать его в коде, но равильно ли так поступать или есть еще какие варианты? "Выкрутился" прописав "extern "C"", но не знаю на сколько это корректно. 2. Как проверить то, что найденная функция действительно та, что ожидается приложением, т.е. соответствует хотябы количество и типы передаваемых и получаемого значений? Ведь если этого не сделать, то использование библиотеки становится потенциально опасным. 3. Если использовать данные в библиотеке, то эти данные будут разделяться между приложениями или создаваться заново при каждом ее подключении? Или лучше вообще избавляться от таких данных? Заранее спасибо. |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 1 Всего: 39 |
1. Этот выкрутас - правильное решение.
2. ИМХО никак. 3. Будут создаваться. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
если кто-то не следует спецификации при написании плагина, то приложение в этом не виновато ;) по сабжу, извраты для реализации такого поведения не стоят того глобальные да по возможности лучше сократить их использование, чтобы лишний раз потом не заморачиваться с синхронизацией правильное решение - создавать все объекты по требованию приложения, т. е. приложение вызывает ряд API функций => создаются объекты => функции либы используются для работы с ними => в конце вызывается функция их освобождения -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: нет Всего: 3 |
Спасибо за информационную поддержку.
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Написать extern "C"
|
||||
|
|||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |