问题背景:实验室最近需要用python二次开发软件,需要用到python调用c++的opencv相关函数,生成后发现怎么样都无法导入生成的xxx.pyd库。
问题描述:
在pycharm下,为这个错误,这是说pyd已经导入,但是其依赖的dll,连接时发生了错误,想到运行exe来发现什么dll发生了错误。把生成dll改为生成exe,运行生成的exe文件,出现“(mfc120.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突”的错误。
解决办法:找到所有用到mfc的头文件,函数,用标准库替代,重新生成dll。
- 我所用到的c++头文件中,为了使用CString类型,引入了<afx.h>,把其用<atlstr.h>代替。
- 因为之前用到mfc的相关文件,把
换成
。
- 重新生成pyd,加入pycharm工程
- 调用成功