用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()函数的声明定义,是关键。是不是豁然开朗迎刃而解呢。