2010-07-15 2 views
7

Я продолжаю видеть, как люди пишут обертки, скажем, модуль, написанный на языке X, чтобы использовать его в языке Y. Я хотел знать основы написания таких оберток. С чего начать? Мой вопрос здесь более конкретный для libgnokii, как мне начать писать привязки python для него.Письменные переплеты и обертки

ответ

7

Вы можете начать использовать: extending python with c or c++ И тогда, когда вы решите, что это слишком много хлопот, вы можете проверить swig или, возможно, Boost.Python. ctypes также может быть полезна.

Я сделал ручную упаковку классов C++, и я использовал swig. swig было намного проще в использовании, но в конце концов я хотел сделать то, что было нелегко сделать (или мне было слишком ленив, чтобы понять, как). Поэтому я закончил ручную упаковку. Это немного работа, но если вы знаете немного C, это очень удобно.

2

Вы можете начать с поиска here для получения информации о расширении Python с помощью C. Вы, вероятно, захотите подумать о том, как перевести API libgnokii на что-то Pythonic, пока вы на нем. Если вы не хотите много работать, вы можете просто написать тонкую оболочку, которая переводит все вызовы API gnokii в функции Python.

+0

ТАК делает вещи Pythonic означает писать всю библиотеку как модуль с нуля? – tsudot

+2

Нет, не обязательно. Один из примеров из того, что я сделал: у меня был класс C++, который мне нужен, чтобы создать объект, прежде чем я смогу использовать на нем функцию (в этом случае функция должна быть статической). Вместо того, чтобы пользователь python-модуля прошел одни и те же шаги, я просто построил объект этого класса в моем расширении python и разоблачил функцию как функцию в модуле python, скрывая тот факт, что он принадлежал классу, который wasn Это действительно необходимо. Таким образом, немного убирают интерфейсы. –

Смежные вопросы