我是cython(和c ++)的新手,我正在尝试在模块化框架中构建一些简单的DSP工具。我希望能够在python中将它们用于研究目的,虽然我已经成功地将一些简单的c ++类转换为python,但我现在正在努力解决一个看似微不足道的问题。
我写了一个biquad.h和biquad.cpp定义的双二阶过滤类。我们的想法是在dsp模块中有许多过滤类,以及许多其他dsp工具(类似于JUCE中的模块组织)。在遵循这种方法时,biquad头文件没有明确地包含在biquad c ++文件中,而是通过dsp.h链接,dsp.h定义了模块,即在dsp.h中我有一个包含所有dsp类的列表。
... e.g
#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:
它也无法包含头文件。我原本认为dsp.h中的include语句可以做到这一点,但似乎并非如此,我不知道如何明确地包含它。
BTW我得到的错误是:
error: use of undeclared identifier 'biquad'
非常感谢任何帮助!