python — добавляет заголовочные файлы для cythonize класса c ++

Я довольно новичок в Cython (и C ++), и я пытаюсь создать несколько простых инструментов DSP в модульной структуре. Я хочу иметь возможность использовать их для исследовательских целей в Python, и, хотя мне удалось перевести ряд простых классов C ++ в Python, я сейчас борюсь с, казалось бы, тривиальной проблемой.

Я написал класс фильтрации biquad, определенный в biquad.h и biquad.cpp. Идея состоит в том, чтобы иметь несколько классов фильтрации, которые живут в модуле dsp, наряду с рядом других инструментов dsp (аналогично организации модулей в JUCE). Следуя этому подходу, заголовочный файл biquad явно не включается в файл biquad c ++, а скорее связывается через dsp.h, который определяет модуль, то есть в dsp.h у меня есть список включений для всех классов dsp.

например…

#include filters/biquad.h
#include filters/fir.h
#include transforms/hilbert.h

Поэтому, когда я собираюсь построить свой объект python, я пытаюсь скомпилировать мой класс фильтра biquad:

# distutils: sources = biquad.cpp

Если я попытаюсь определить свой внешний файл из файла biquad.h, например:

cdef extern from "biquad.h":
cdef cppclass biquad:

тогда я сталкиваюсь с проблемами, потому что файл заголовка не включен в файл c ++. Но если я определю внешний из основного файла dsp.h, например:

cdef extern from "dsp.h":
cdef cppclass biquad:

он также не может включить файл заголовка. Я бы подумал, что оператор include в dsp.h сделал бы это, но, похоже, это не так, и я понятия не имею, как включить его явно.

Кстати, ошибки, которые я получаю:

error: use of undeclared identifier 'biquad'

Любая помощь будет принята с благодарностью!

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]