我有一个同事用cython.weave
封装C ++库中的函数的代码:
def partialsort(a, K):
support_code = "#include <algorithm>"
code = "std::partial_sort (&ak(0), &ak(K), &ak(N));"
N = len(a)
ak = a.copy()
vars = ['ak', 'K', 'N']
s = weave.inline(code, vars, support_code=support_code,
type_converters=converters.blitz)
如果没有Weave工具,我想用Cython代替它。到目前为止,我已经基于http://docs.cython.org/en/latest/src/userguide/external_C_code.html尝试过运气,并在Cython模块中尝试了以下操作,只是为了检查我是否可以完全访问该库:
cdef extern from "<algorithm>":
pass
当我尝试构建Cython模块时,出现以下错误:
csorting.c:604:10: fatal error: algorithm: No such file or `folder
#include <algorithm>
^~~~~~~~~~~
compilation terminated.
据我了解,<algorithm>
是一个C ++库。 C ++是这里的问题吗?我有g++
,但是Cython构建设置使用gcc
。 <algorithm>
是必须单独安装的库吗?