You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cython如何将C++类导出为.hpp头文件而非C语言.h头文件

解决方案

1. 生成包含class关键字的C++头文件

Cython的cppclass默认生成struct是因为无自定义访问修饰符时,C++ struct和class仅默认访问权限存在差异,Cython会优先用struct输出完全public的类型。如果需要强制输出class关键字,只需给cppclass显式添加非public的访问修饰符即可,示例代码如下:

cdef public:
    cppclass foo:
        float bar
        # 显式添加私有访问修饰符,触发Cython用class声明
        private:
            int __dummy

上述代码转译后,头文件中就会生成带class关键字的类型定义。

如果你不需要额外私有成员,也可以接受C语法规则的话,实际生成的struct类型在C环境中可以完全正常当作类使用,二者仅默认访问权限不同,不存在功能差异。

2. 自定义输出头文件后缀

Cython默认输出.h后缀的头文件,你可以通过--output-header参数直接指定输出的头文件完整名称,即可得到.hpp/.hh后缀的产物,调整后的转译命令如下:

cython3 -3 --cplus --fast-fail mod.pyx --output-header mod.hpp

如果需要.hh后缀,将参数值改为mod.hh即可。

内容的提问来源于stack exchange,提问作者Dan D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:24:03