Расширение Python с помощью библиотеки общих объектов C ++ с использованием Cython - PullRequest
2 голосов
/ 29 января 2011

Итак, в основном я пытаюсь написать свою собственную оболочку GUI на Python (используя GTK +, но я не думаю, что это актуально) для API, написанного на C ++ и скомпилированного пользователем в общий объектный файл (вlinux [* nix? Я не совсем уверен, как это работает на macs]) или dll (в windows), на который вы должны ссылаться, чтобы использовать API самостоятельно.После долгого времени попыток с Cython, я могу написать свои собственные расширения, если это всего лишь один файл, но я не могу найти в Интернете ничего об использовании нескольких файлов (как это, очевидно, так как любой реальный проектбудет) скомпилировать в один .so, который может быть импортирован в проект Python.Нужно ли мне вручную проходить и использовать Cython и создавать файлы .pyx для каждого файла .cpp (их много), компилировать их в файлы cpp, а затем редактировать, а затем использовать файл make для компиляции их в файл .soили есть более автоматизированный способ?(PS Я пытался скомпилировать каждый из них отдельно с Cython, но, похоже, он не похож на нотацию "#include " и поэтому не смог скомпилировать большинство файлов)

Другая информацияЯ смог взаимодействовать с библиотекой, используя ctypes, но это было чрезвычайно хакерским и непитоническим, и я все равно хочу получить больше опыта работы с Cython, так как кажется, что это может быть чрезвычайно полезным активом.

1 Ответ

0 голосов
/ 02 марта 2011

Вы можете создать файл с именем «yourmodule.pyx», переименовать все остальные файлы в pxi и сделать:

include "other1.pxi"
include "other2.pxi"

Тогда у вас будет только один файл для катонизации и компиляции: yourmodule.pyx.

...