【发布时间】:2021-12-20 10:17:36
【问题描述】:
这在 .pxd 文件中可以正常工作:
cdef public:
struct foo:
float bar
但这不起作用:
cdef public:
class foo:
float bar # Syntax error in simple statement list
这可行,但 Cython 仍在制作 struct 而不是 class 并且生成的文件是 .h 文件而不是 .hpp(或 .hh)文件:
cdef public:
cppclass foo:
float bar
我的文件名为 mod.pyx,Cython 将上面的 cppclass 转换为:
#ifndef __PYX_HAVE__mod
#define __PYX_HAVE__mod
#include "Python.h"
struct foo;
struct foo {
/* "mod.pyx":21
*
* cdef public:
* cppclass foo: # <<<<<<<<<<<<<<
* float bar
*
*/
float bar;
};
如何从 Cython 转译中生成真正的 C++ 输出?我的意思是 .hpp 或 .hh 文件,里面有 class 关键字。可以改用单独的 C++ 头文件,但我想让源代码完全使用 Cython。
转译命令为:cython3 -3 --cplus --fast-fail mod.pyx
【问题讨论】:
标签: python c++ header cython transpiler