小编Yun*_* Ma的帖子

在Cython中调用外部c ++模板函数

我在c ++头文件中声明并实现了许多c ++模板函数,我想访问Cython中的一些函数.

假设c ++代码header.hpp如下所示

template <class T> 
T doublit(T& x) {
    return 2*x;
}
Run Code Online (Sandbox Code Playgroud)

我需要在.pyx文件和setup.py文件中编写什么才能在Python中使用该函数

>>> import modname
>>> print modname.doublit(3)
6
Run Code Online (Sandbox Code Playgroud)

PS:是否可以在PYPY中访问相同的功能?如果是的话,怎么样?


谢谢你的帮助.但是当我试图按照你的方式行事时,我还有其他困难(下面).

doublit.h

template <class T> 
T doublit(T& x) {
   return 2*x;
}
Run Code Online (Sandbox Code Playgroud)

cdoublit.pxd

cdef extern from "doublit.h":
    cdef int doublit1 "doublit<int>"(int& foo)
    cdef double doublit2 "doublit<double>"(double& foo)
Run Code Online (Sandbox Code Playgroud)

doublit.pyx

# main.pyx file
from cdoublit cimport *

cdef int n1 = 5
cdef double n2 = 5.0
print(doublit1(n1))
print(doublit2(n2))
Run Code Online (Sandbox Code Playgroud)

和setup.py

from distutils.core import setup
from distutils.extension …
Run Code Online (Sandbox Code Playgroud)

python cython

7
推荐指数
1
解决办法
2043
查看次数

标签 统计

cython ×1

python ×1