我正在使用 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/