【发布时间】:2023-03-16 20:17:01
【问题描述】:
我正在做一个项目,我需要在 C++ 中嵌入一些 python 代码。我一直在尝试 Cython 一段时间,但我仍然有很多问题。这是我尝试过的演示。
这里有几个包含结构和函数的文件:
首先,这是文件cat.pyx
cdef public struct Cat:
int num
cdef public setCatNum(Cat* cat):
cat.num = 100
cdef public int getCatNum(Cat* cat):
return cat.num
及其.pxd 文件cat.pxd:
cdef public struct Cat:
int num
cdef public setCatNum(Cat* )
cdef public int getCatNum(Cat* )
这是我的setup.py:
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [
Extension("cat", ["cat.pyx"], include_dirs=['.']),
]
setup(
name='dotest',
cmdclass={'build_ext': build_ext},
ext_modules=ext_modules,
script_args=['build_ext'],
options={'build_ext':{'inplace':True, 'force':True}}
)
它可以正确编译,但是在生成的cat.h 文件中,函数声明是别的东西:
__PYX_EXTERN_C PyObject *__pyx_f_3cat_setCatNum(struct Cat *);
__PYX_EXTERN_C int __pyx_f_3cat_getCatNum(struct Cat *);
那么我如何在我的 C/C++ 程序中调用这些函数呢?提前谢谢你。
【问题讨论】:
-
你读过this documentation?我假设你有,因为你正确地制作了函数
public。我认为它应该生成更简单的名称... -
是的,我确实阅读了那个例子。它说在 python 3.x 中我应该导入一个模块。但是我不太明白如何使用该模块来调用文档中的那些函数。
标签: python c++ c python-3.x cython