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

时间:2012-02-10 18:55:01

标签: c++ python c distutils

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

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

ImportError:动态模块没有定义init函数(initspam)

CPP中的新模块是否有不同的格式而不是C?

1 个答案:

答案 0 :(得分:6)

您需要将您的init函数包含在

#ifdef __cplusplus
extern "C" {
#endif

//initspam goes here

#ifdef __cplusplus
}
#endif

以防止其名称被破坏。