添加头文件以cythonize c ++类

时间:2015-08-24 16:41:17

标签: python c++ cython distutils

我是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'

非常感谢任何帮助!

0 个答案:

没有答案