用C++為Python編寫擴展模塊(動態鏈接庫),並在Python中調用C++開發的擴展功能函數過程,遇到如下錯誤的童鞋,是不是很苦惱啊:
Traceback (most recent calllast):
File "t.py", line 6, in<module>
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
摘自 無聊中的博客