Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 16, 2012 21:25:01

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

SWIG и указатели на функции

Здравствуйте!

У меня есть указатели на сишные функции, я могу передавать их в другие сишные функции, но, к сожалению, не нашёл, как их вызывать непосредственно из питона. Можно ли это сделать и ежели да, то как? Интересует также вопрос, есть ли какие-то подводные камни, ежели функция суть метод класса.

Заранее благодарен.



Офлайн

#2 Янв. 16, 2012 21:41:51

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

SWIG и указатели на функции

swig вообще все незнакомое в указатели заворачивает и это тоже завернет.
Если функция суть метод класса - то это вовсе не указатель на функцию в общем случае.
А вызвать просто - передаете указатель на это нечто в сишный код и он его нормально вызовет.

ps.
если используете несколько динамических библиотек с разными опциями сборки, то в этом месте легко может навернуться именно потому что это не просто указатель.



Офлайн

#3 Янв. 16, 2012 23:14:56

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

SWIG и указатели на функции

doza_and
А вызвать просто - передаете указатель на это нечто в сишный код и он его нормально вызовет.
Ну так я могу, а мне бы хотелось напрямую.

doza_and
если используете несколько динамических библиотек с разными опциями сборки, то в этом месте легко может навернуться именно потому что это не просто указатель.
Ну скажем так, я хочу сделать нечто вроде плагинной системы. Я хелло ворлд написал, из С++ плагины работают, и даже из питона таким образом работают, теперь я хочу попробовать плагины тоже в свиг заворачивать и через питон передавать “основной” сишной библиотеке. Хотя, наверное, можно обойтись без этого (равно как и без вызова указателей), но с этим было бы веселее. Скажем, у плагина помимо стандартного интерфейса могут быть ещё какие-то потроха, и так к ним можно было бы обращаться из питона.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version