c++ - 如何在 OSX 上为 Python 编译 C++ 扩展(而不是 C)?

标签 c++ python c distutils

我正在使用 distutils,并且有一个模块 spammodule.c 可以完美地编译、链接和工作。

但是如果我将该模块重命名为 .cpp 并重新运行 distutils 构建/安装序列,该模块会构建但在 python 中导入时会给我一个错误:

ImportError: 动态模块没有定义初始化函数 (initspam)

CPP 中的新模块与 C 中的新模块有不同的格式吗?

最佳答案

你需要将你的初始化函数包含在

#ifdef __cplusplus
extern "C" {
#endif

//initspam goes here

#ifdef __cplusplus
}
#endif

为了防止它的名字被破坏。

关于c++ - 如何在 OSX 上为 Python 编译 C++ 扩展(而不是 C)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9233181/

相关文章:

python - 覆盖文件python中的标志

python - 在 PEP 3141 中,为什么 Number 没有 add 方法?

python - scrapy 和相对路径

c - 未定义的标识符

c - 如何为C中的某个内存位置分配新值

C++ - 错误 : Expression must be a modifiable lvalue

C++ volatile 放置 新

c++ pound 定义只有一个参数

c - 密码验证 Else 语句在不应该触发时触发

c++ - MySQL 和可变参数