Как мне скомпилировать расширение C ++ (а не C) для Python на OSX? - PullRequest
3 голосов
/ 10 февраля 2012

Я использую distutils, и у меня есть модуль spammodule.c, который компилирует, связывает и отлично работает.

Но если я переименую этот модуль в .cpp и перезапущу последовательность сборки / установки distutils,модуль собирается, но выдает ошибку при импорте в python:

ImportError: динамический модуль не определяет функцию инициализации (initspam)

Существует ли другой формат для новых модулей в CPP, а не в C

1 Ответ

6 голосов
/ 10 февраля 2012

Вам нужно заключить вашу функцию инициализации в

#ifdef __cplusplus
extern "C" {
#endif

//initspam goes here

#ifdef __cplusplus
}
#endif

для предотвращения искажения его имени.

...