C++封装python扩展模块ImportError

2014-11-24 12:22:23 · 作者: · 浏览: 1

C++Python编写扩展模块(动态链接库),并在Python中调用C++开发的扩展功能函数过程,遇到如下错误的童鞋,是不是很苦恼啊:
  Traceback (most recent calllast):

  File "t.py", line 6, in

  import Rabbit

  ImportError: No modulenamed Rabbit

  经过分析,可能的原因有:

  1、 开发中若使用的Python2.5版本,请检查生成的动态库扩展名,是不是“pyd”;(若后缀是dll,悲催了,赶紧修改吧);

  2、 在DLLMAIN的源代码中,将扩展模块的初始化代码导出:

  #ifdef PYRABBIT_EXPORTS

  #define PYRABBIT_API__declspec(dllexport)

  #else

  #definePYRABBIT __declspec(dllimport)

  #endif

  extern "C" PYRABBIT_API void initRabbit(){

  PyObject*m=Py_InitModule("Rabbit", RabbitMethods);

  }

  3、 生成的动态库文件(后缀名为pyd),所在目录没有加入到环境变量里面,可以通过在控制台输入以下命令检查;

  Import os

  os.sys.path

摘自 无聊中的博客