1. 程式人生 > >C++開發python擴充套件模組:ImportError: dynamic module does not define init function (initRabbit)解決辦法

C++開發python擴充套件模組:ImportError: dynamic module does not define init function (initRabbit)解決辦法


用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()函式的宣告定義,是關鍵。是不是豁然開朗迎刃而解呢。