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

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

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

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

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

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

fshshsh
исходниках, dll, lib. В зависимости от этого обертки пишутся по разному?
обертки для lib вообще не пишутся. Т.е. есть один способ использовать lib - собрать свою версию интерпрететора. Способ не очень легкий и не очень полезный. Вы забыли еще одни важный способ оборачивания. Обертки для приложений.
Если у вас возникает такой вопрос, то , очевидно, вам вообще рано думать о том чтобы писать обертки. Сначала надо выучить С/С++ потом понять для чего вам нужен python, потом выучить python а потом уже делать обертки.
fshshsh
doza_and
В с++ не профессионал, но где-то на уровне джуниора - владею. Пайтон пока изучаю. Хочу попробовать написать игрушку на pyglet и pyopengl. Просто не хочется в один не прекрасный момент упереться в отсутствие нужного инструмента, когда на другом языке он уже будет реализован/обернут (какой-нибудь box2d).
fshshsh
JOHN_16
Вы с помощью ctypes оборачивали? Читал, что для обертки, полученной с его помощью, нужно что-то в системном окружении прописывать.
JOHN_16
fshshsh
Вот репозиторий кода можете сами глянуть и убедиться что никаких сверх естественных действий не делается.
Isem
fshshsh
интересуемые фреймворки на с\с++
4kpt_III
“Extending and Embedding the Python Interpreter”
Вот ответ.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB