Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 9, 2015 00:11:37

fshshsh
Зарегистрирован: 2015-10-08
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Как писать обертки к с++?

Много чего читал: про swig про pinvoke, dll, lib, но так картину и не понял. Хочется писать на пайтоне, но интересуемые фреймворки на с\с++. Не хочу ни от кого зависеть - писать обертки сам, если надо.
1. Нативный код может находиться в: исходниках, dll, lib. В зависимости от этого обертки пишутся по разному?
2. Смотрел про swig. Так к нативному коду еще и файл промежуточный создавать надо. Это единственный путь или есть другие?
3. На сколько это трудоемко, есть ли баги при написании? Обертки - это ведь всего лишь переписывает сигнатур методов, классов?
4. Какие инструменты посоветуете и обучение?

Отредактировано fshshsh (Окт. 9, 2015 00:21:43)

Офлайн

#2 Окт. 9, 2015 00:34:57

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Как писать обертки к с++?

fshshsh
Хочется писать на пайтоне, но интересуемые фреймворки на с\с++

Обалдеть…

Офлайн

#3 Окт. 9, 2015 01:05:23

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как писать обертки к с++?

4kpt_III
Обалдеть…
да нее, все норм. когда речь заходит, например, о узко специализированных библиотеках, такой подход вполне себе.
Я например делал обертку над dll библиотекой которая является интерфейсом к драйверу(ОС windows) АЦП известной в России фирмы. И суть обертки как раз была в зеркалировании сишных функций. А почему:-)? Правильно потмоу чт оя хочу писать на Питоне…ну и потмоу что надо интегрировать эту милую хрень в существующий проект на питоне. P.S. и все хорошо работает.

fshshsh
по теме: модуль ctypes. Это до 100% того что вам понадобится, ну и еще определенные знания самого С/С++.
В самой документации по Питону есть раздел “Extending and Embedding the Python Interpreter” вот он тоже может быть полезный, ибо например, можно попробовать весь С/С++ код сделать как расширение для Питона. Тогда в итоге вы получите оч красивый python модуль.

Ну а если все равно будут затруднения, то наверное лучше поискать в англоязычной части интернета, на предмет python wrapper module. Все таки вопрос достаточно специализирован.

Еще может пригодиться просмотр кода уже существующих проектов модулей оберток. Я точно не знаю. но может PyQt, PyOpenGL



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Окт. 9, 2015 09:08:24

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

Как писать обертки к с++?

JOHN_16
Это до 100% того что вам понадобится,
Ну можно чуть пошире посмотреть на этот вопрос. CFFI облегчает согласование интерфейсов. а функциональность совпадает с ctypes.
cython это подход с другой стороны. для совсем уж любителей python.

Мы считаем что пишем на C++. На python небольшие обертки для управления этими приложениями. При этом так сложилось что у нас 80% кода пишется на python и 20% на С++. :)

fshshsh
исходниках, dll, lib. В зависимости от этого обертки пишутся по разному?
обертки для lib вообще не пишутся. Т.е. есть один способ использовать lib - собрать свою версию интерпрететора. Способ не очень легкий и не очень полезный. Вы забыли еще одни важный способ оборачивания. Обертки для приложений.
Если у вас возникает такой вопрос, то , очевидно, вам вообще рано думать о том чтобы писать обертки. Сначала надо выучить С/С++ потом понять для чего вам нужен python, потом выучить python а потом уже делать обертки.



Отредактировано doza_and (Окт. 9, 2015 09:16:27)

Офлайн

#5 Окт. 11, 2015 00:32:40

fshshsh
Зарегистрирован: 2015-10-08
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Как писать обертки к с++?

doza_and
В с++ не профессионал, но где-то на уровне джуниора - владею. Пайтон пока изучаю. Хочу попробовать написать игрушку на pyglet и pyopengl. Просто не хочется в один не прекрасный момент упереться в отсутствие нужного инструмента, когда на другом языке он уже будет реализован/обернут (какой-нибудь box2d).

Офлайн

#6 Окт. 11, 2015 00:41:44

fshshsh
Зарегистрирован: 2015-10-08
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Как писать обертки к с++?

JOHN_16
Вы с помощью ctypes оборачивали? Читал, что для обертки, полученной с его помощью, нужно что-то в системном окружении прописывать.

Офлайн

#7 Окт. 11, 2015 04:25:11

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как писать обертки к с++?

fshshsh
Вот репозиторий кода можете сами глянуть и убедиться что никаких сверх естественных действий не делается.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Ноя. 28, 2015 15:06:54

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Как писать обертки к с++?

fshshsh
интересуемые фреймворки на с\с++
4kpt_III
“Extending and Embedding the Python Interpreter”
Вот ответ.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version