我正在尝试使用cython编译模块,但编译器无法在外部c文件中找到包含库(我使用cmath
作为示例,但我想要的其他库如cstdio
,cstdint
,cstring
有同样的问题)
最小的例子由以下4个简单文件组成:
cfile.c:
#include <cmath>
test_pxd.pxd:
cdef extern from "cfile.c":
pass
test.pyx:
cimport test_pxd
setup.py:
from distutils.core import Extension, setup
from Cython.Build import cythonize
sources = ['test.pyx']
extension = [Extension('test',sources)]
setup(ext_modules=cythonize(extension,force=True))
如果我使用以下代码运行setup.py
python3 setup.py build_ext --inplace
我收到错误:
cfile.c:1:17:致命错误:cmath:没有这样的文件或目录
应该注意的是,只需直接编译c文件,例如使用g++ -c cfile.c
,就不需要任何额外的链接来让编译器找到这些库。
如何让cython中的编译器在外部c文件中找到cmath
(以及其他如cstdio
,cstdint
,cstring
)库?< / p>
答案 0 :(得分:0)
定义应该反对标题,而不是实现:
constructor(private activatedRoute: ActivatedRoute) {}
this.activatedRoute.params.subscribe((params: Params) => {
let token = params['token'];
console.log(token);
});
如果使用C ++库,必须将cdef extern from "cfile.h":
pass
指令添加到setuptools / cythonize。
language='c++'
另见docs。