C++開發python擴充套件模組:ImportError: dynamic module does not define init function (initRabbit)解決辦法
阿新 • • 發佈:2018-12-31
用C++為Python編寫擴充套件模組(動態連結庫),並在Python中呼叫C++開發的擴充套件功能函式過程,遇到如下錯誤的童鞋,系不繫很苦惱啊:
ImportError: dynamic module does notdefine init function (initRabbit)
經過分析,原因是,沒有正確匯出封裝python擴充套件模組所必需的init函式,正確的匯出方法為:
#ifdef PYRABBIT_EXPORTS
#define PYRABBIT_API __declspec(dllexport)
#else
#define PYRABBIT __declspec(dllimport)
#endif
extern "C" PYRABBIT_APIvoid initRabbit(){
PyObject* m=Py_InitModule("Rabbit",RabbitMethods);
}
上面的initRabbit()函式的宣告定義,是關鍵。是不是豁然開朗迎刃而解呢。