我正在尝试使用Cython为C库编写包装器。
我创建了一个使用我的C例程的简单pyx文件。
cdef extern from "sel.h":
void parse_file(const char *file)
cpdef void main(str file):
file_pybyte = file.encode('UTF-8')
cdef char*c_file = file_pybyte
parse_file(c_file)
sel.c
文件导入位于src
目录中的C库,该库包含数百个文件。
// sel.c
#include "src/clib/finder.h"
#include "src/clib/core/core.h"
#include "src/clib/encoding/encoding.h"
这些初始头文件中包含很多其他内容。
每当我试图运行已编译的库时,我都会收到错误:
未找到符号:_type_attribute
期望:平面命名空间
type_attribute
函数在src/clib/finder.h
文件中导入。
如何自动查找和编译C库中的所有依赖项?
我的设置配置如下所示:
cythonize([Extension("*",
["lib/*.pyx",
"lib/sel.c",
],
include_dirs=[
'lib/src/clib/',
'lib/src/clib/include', ],
)])
我已尝试在配置中列出所有C文件,但由于此库包含许多特定于平台的文件,因此无法正常工作。
答案 0 :(得分:1)
试
extern "C" {
#include "src/clib/finder.h"
}
这将包括它作为C而不是C ++。
此处的赠品是符号中的_
,表示它具有C ++名称重整